上篇文章讲了生成Word时的cmd组件问题,这篇文章主要是将Aspose.Word的使用。它与Microsoft.Office.Interop.Word相比的优缺点如下:
优点:1.生成速度快
2.可同时多人进行操作
缺点:1.再进行生成没有表格即多段文字的时候格式会乱掉(如:一行中A112121拉可适当减肥 生成时会变成 第一行A112121 第二行拉可适当减肥 )
注意:Aspose.wrod是收费软件
使用步骤:1.引用Aspose.wrod.dll组件
2.在word模板中加入书签(我习惯于加入书签,也可用其它方法)
3.程序中的id 要与书签名字数量一致(不然会出错)
部分代码如下:
//载入模板 templatePath为Word模板路径
Document doc = new Document(templatePath);
DocumentBuilder builder = new DocumentBuilder(doc);
//遍历书签
foreach (Bookmark mark in doc.Range.Bookmarks)
{
if(mark!=null)
{
if(mark.Name=="txt_name")
{
//插入普通文字
mark.Text = "";//将书签位置的内容清空
builder.MoveToBookmark("txt_name");//移到书签位置
builder.Font.Size = 5;//设置字体大小
builder.Font.Bold = true;//字体加粗
builder.ParagraphFormat.LineSpacing = 9;//设置段落行间距
builder.Write("张三");//在书签部分填入名称
//插入图片 imgPath图片路径
builder.InsertImage(imgPath,
RelativeHorizontalPosition.Margin, 1,//水平位置的间距
RelativeVerticalPosition.Margin, 1, //相对垂直位置的间距
10, 10,//图片长宽
WrapType.Inline//插入方式
);
//生成条形码
#region 条形码
Aspose.BarCode.BarCodeBuilder tiaoma = new Aspose.BarCode.BarCodeBuilder();
tiaoma.CodeText = "12121212121";
//Set the symbology type to Code128
tiaoma.SymbologyType = Aspose.BarCode.Symbology.Code128;
//Create builder for document object
Aspose.Words.DocumentBuilder docBuilder = new Aspose.Words.DocumentBuilder(doc);
//Insert the barCode image into document
docBuilder.InsertImage(tiaoma.BarCodeImage,
Aspose.Words.Drawing.RelativeHorizontalPosition.Margin, 170,
Aspose.Words.Drawing.RelativeVerticalPosition.Margin,
35,
170,
45,
Aspose.Words.Drawing.WrapType.TopBottom);
#endregion
//自动生成表格
NodeCollection allTables = doc.GetChildNodes(NodeType.Table, true); //拿到所有表格
Aspose.Words.Tables.Table table = allTables[0] as Aspose.Words.Tables.Table; //拿到第一个表格
Aspose.Words.Tables.Row r2 = new Aspose.Words.Tables.Row(doc);
Aspose.Words.Tables.Cell c21 = new Aspose.Words.Tables.Cell(doc);
c21.CellFormat.Width = 39.35;
c21.CellFormat.Borders.Left.LineWidth = 1.5;
c21.CellFormat.Borders.Top.LineWidth = 1;
Aspose.Words.Paragraph p1 = new Aspose.Words.Paragraph(doc);
p1.ParagraphFormat.Style.Font.Name = "仿宋_GB2312";
p1.ParagraphFormat.Style.Font.Size = 14;
p1.ParagraphFormat.Alignment = ParagraphAlignment.Center;
p1.ParagraphFormat.LineSpacingRule = LineSpacingRule.Exactly;
p1.ParagraphFormat.LineSpacing = 24f;
p1.AppendChild(new Run(doc,认为));
c21.AppendChild(p1);
r2.Cells.Add(c21);
table.Rows.Add(r2); //添加一行
}
}
}
//生成word saveDocFile word路径
doc.Save(saveDocFile);
//生成pdf pdf保存路径
doc.Save(savepdf, Aspose.Words.SaveFormat.Pdf);