WPF使用Aspose.Words导出Word文档

一、创建Word文档模板

  1. 分析需要导出的word文档,将固定的内容和由程序生成的内容分开;
  2. 创建一个word(例如:Template.doc)文档,将固定的内容按照一定的格式写入当前文档中;
  3. 打开Template.doc在需要动态插入内容的地方插入书签;

二、创建所需要的对象

 Aspose.Words.Document doc = new Aspose.Words.Document("Word文档模板的路径");
 Aspose.Words.DocumentBuilder builder = new Aspose.Words.DocumentBuilder(doc);

三、指定书签插入文字

 builder.MoveToBookmark("word模板中书签的名称");
 builder.Font.Size = 14;
 builder.Font.Name = "黑体";
 builder.Write("文字内容");

四、指定书签插入表格

//插入一个两行三列的table
builder.MoveToBookmark("word模板中书签的名称");
builder.StartTable();

//第一行第一列
builder.InsertCell();
builder.Font.Size = 10.5;
builder.Font.Name = "宋体(中文正文)";
builder.CellFormat.Width = 100.0;
builder.Write("第一行第一列");

//第一行第二列
builder.InsertCell();
builder.Font.Size = 10.5;
builder.Font.Name = "宋体(中文正文)";
builder.CellFormat.Width = 100.0;
builder.Write("第一行第二列");

//第一行第三列
builder.InsertCell();
builder.Font.Size = 10.5;
builder.Font.Name = "宋体(中文正文)";
builder.CellFormat.Width = 100.0;
builder.Write("第一行第三列");

builder.EndRow();

//第二行第一列
builder.InsertCell();
builder.Font.Size = 10.5;
builder.Font.Name = "宋体(中文正文)";
builder.CellFormat.Width = 100.0;
builder.Write("第二行第一列");

//第二行第二列
builder.InsertCell();
builder.Font.Size = 10.5;
builder.Font.Name = "宋体(中文正文)";
builder.CellFormat.Width = 100.0;
builder.Write("第二行第二列");

//第二行第三列
builder.InsertCell();
builder.Font.Size = 10.5;
builder.Font.Name = "宋体(中文正文)";
builder.CellFormat.Width = 100.0;
builder.Write("第二行第三列");

builder.EndRow();

builder.EndTable();

五、单元格合并

//将第一行第三列和第二行第三列进行纵向合并 并将文本显示为"这是纵向合并列"
builder.MoveToBookmark("word模板中书签的名称");
builder.StartTable();

//第一行第一列
builder.InsertCell();
builder.Font.Size = 10.5;
builder.Font.Name = "宋体(中文正文)";
builder.CellFormat.Width = 100.0;
builder.Write("第一行第一列");

//第一行第二列
builder.InsertCell();
builder.Font.Size = 10.5;
builder.Font.Name = "宋体(中文正文)";
builder.CellFormat.Width = 100.0;
builder.Write("第一行第二列");

//第一行第三列
builder.InsertCell();
builder.Font.Size = 10.5;
builder.Font.Name = "宋体(中文正文)";
builder.CellFormat.Width = 100.0;
builder.CellFormat.HorizontalMerge=Aspose.Words.Tables.CellMerge.None;
//设置纵向合并
builder.CellFormat.VerticalMerge=Aspose.Words.Tables.CellMerge.First;
builder.Write("这是纵向合并列");

builder.EndRow();

//第二行第一列
builder.InsertCell();
builder.Font.Size = 10.5;
builder.Font.Name = "宋体(中文正文)";
builder.CellFormat.Width = 100.0;
builder.Write("第二行第一列");

//第二行第二列
builder.InsertCell();
builder.Font.Size = 10.5;
builder.Font.Name = "宋体(中文正文)";
builder.CellFormat.Width = 100.0;
builder.Write("第二行第二列");

//第二行第三列
builder.InsertCell();
builder.Font.Size = 10.5;
builder.Font.Name = "宋体(中文正文)";
builder.CellFormat.Width = 100.0;
builder.CellFormat.HorizontalMerge=Aspose.Words.Tables.CellMerge.None;
//设置纵向合并(与第一行第三列合并)
builder.CellFormat.VerticalMerge=Aspose.Words.Tables.CellMerge.Previous;

builder.EndRow();

builder.EndTable();

如果有第三行同时第三行的第三列也需要和第一行、第二行的第三列进行合并应该怎么处理?

//第三行第三列
builder.InsertCell();
builder.Font.Size = 10.5;
builder.Font.Name = "宋体(中文正文)";
builder.CellFormat.Width = 100.0;
builder.CellFormat.HorizontalMerge=Aspose.Words.Tables.CellMerge.None;
//设置纵向合并(与第一行、第二行第三列合并)
builder.CellFormat.VerticalMerge=Aspose.Words.Tables.CellMerge.Previous;

横向合并与纵向合并类似只是横向合并需要设置HorizontalMerge属性。

六、其他的一些属性和方法

//插入段落
 builder.InsertParagraph();
//设置单元格左边边框的样式和宽度(上、右、下类似)
 builder.CellFormat.Borders.Left.LineStyle = Aspose.Words.LineStyle.Single; 
builder.CellFormat.Borders.Left.LineWidth = 1.5;
//设置文字居中
 builder.ParagraphFormat.Alignment = Aspose.Words.ParagraphAlignment.Center;
//设置文字垂直居中
 builder.CellFormat.VerticalAlignment = Aspose.Words.Tables.CellVerticalAlignment.Center;
//是否适应文本(此属性为true如果文本长度大于单元格长度则文本会在单元格内自动换行。此属性为false如果文本长度大于单元格长度则会将当前单元格撑大)
 builder.CellFormat.FitText = true;

 

posted @ 2017-02-09 17:22  小小的怪兽  阅读(1989)  评论(0编辑  收藏  举报