using Aspose.Words;
public void ExportWord()
{
string filePath = Server.MapPath("~/Template.doc");
string filePath1 = Server.MapPath("~/Template1.doc");
//预先生成数据
List studentData = new List();
for (int i = 0; i < 100; i++)
{
studentData.Add(new Student()
{
name = "学生" + i.ToString("D3"),
schoolName = "某某中学",
num = i,
score = i
});
}
//加载word模板。
Aspose.Words.Document doc = new Aspose.Words.Document(filePath);
Aspose.Words.DocumentBuilder docWriter = new Aspose.Words.DocumentBuilder(doc);
double[] colWidth = new double[] { 45, 60, 33, 55 };
string[] colName = new string[] { "编号", "姓名", "分数", "学校" };
int pageSize = 0;
for (int i = 0, j = studentData.Count; i < j; i++)
{
if (pageSize == 0)
{
//word页刚开始,一个表格的开始,要插入一个表头
docWriter.InsertBreak(Aspose.Words.BreakType.ParagraphBreak);
docWriter.StartTable();
AsposeCreateCell(docWriter, colWidth[0], colName[0]);
AsposeCreateCell(docWriter, colWidth[1], colName[1]);
AsposeCreateCell(docWriter, colWidth[2], colName[2]);
AsposeCreateCell(docWriter, colWidth[3], colName[3]);
docWriter.EndRow();
}
else if (pageSize == 30)//经过测算,每页word中可以放置30行
{
//结束第一个表格,插入分栏符号,并开始另一个表格
docWriter.EndTable();
docWriter.InsertBreak(Aspose.Words.BreakType.ColumnBreak);
docWriter.InsertBreak(Aspose.Words.BreakType.ParagraphBreak);
docWriter.StartTable();
AsposeCreateCell(docWriter, colWidth[0], colName[0]);
AsposeCreateCell(docWriter, colWidth[1], colName[1]);
AsposeCreateCell(docWriter, colWidth[2], colName[2]);
AsposeCreateCell(docWriter, colWidth[3], colName[3]);
docWriter.EndRow();
}
else if (pageSize == 60)//word分栏为2栏,那么一页word可以放60行数据
{
//一页word完毕,关闭表格,并绘制下一页的表头。
docWriter.EndTable();
docWriter.InsertBreak(Aspose.Words.BreakType.PageBreak);
docWriter.InsertBreak(Aspose.Words.BreakType.ParagraphBreak);
docWriter.StartTable();
AsposeCreateCell(docWriter, colWidth[0], colName[0]);
AsposeCreateCell(docWriter, colWidth[1], colName[1]);
AsposeCreateCell(docWriter, colWidth[2], colName[2]);
AsposeCreateCell(docWriter, colWidth[3], colName[3]);
docWriter.EndRow();
pageSize = 0;
}
pageSize++;
//创建内容
AsposeCreateCell(docWriter, colWidth[0], studentData[i].num.ToString());
AsposeCreateCell(docWriter, colWidth[1], studentData[i].name);
AsposeCreateCell(docWriter, colWidth[2], studentData[i].score.ToString());
AsposeCreateCell(docWriter, colWidth[3], studentData[i].schoolName);
docWriter.EndRow();
}//end for
//保存文件
doc.Save(filePath1, Aspose.Words.SaveFormat.Doc);
}
public void AsposeCreateCell(Aspose.Words.DocumentBuilder builder, double width, string text)
{
builder.InsertCell();
builder.CellFormat.Borders.LineStyle = Aspose.Words.LineStyle.Single;
builder.CellFormat.Borders.Color = System.Drawing.Color.Black;
builder.CellFormat.Width = width;//单元格的宽度
builder.CellFormat.LeftPadding = 3;//单元格的左内边距
builder.CellFormat.RightPadding = 3;//单元格的右内边距
builder.RowFormat.Height = 20;//行高
builder.CellFormat.VerticalMerge = Aspose.Words.Tables.CellMerge.None;
builder.CellFormat.VerticalAlignment = Aspose.Words.Tables.CellVerticalAlignment.Center;//垂直居中对齐
builder.ParagraphFormat.Alignment = Aspose.Words.ParagraphAlignment.Center;//水平居中对齐
builder.Write(text);
}
public void MergeCell()
{
string filePath = Server.MapPath("~/Template.doc");
string filePath1 = Server.MapPath("~/Template1.doc");
Aspose.Words.Document doc = new Aspose.Words.Document(filePath);
Aspose.Words.DocumentBuilder builder = new Aspose.Words.DocumentBuilder(doc);
builder.InsertCell();
builder.CellFormat.Borders.LineStyle = LineStyle.Single;
builder.CellFormat.Borders.Color = System.Drawing.Color.Black;
//水平合并
builder.CellFormat.VerticalMerge = Aspose.Words.Tables.CellMerge.First;
//垂直合并
//builder.CellFormat.HorizontalMerge= Aspose.Words.Tables.CellMerge.First;
builder.Write("Text in merged cells.");
builder.InsertCell();
builder.CellFormat.Borders.LineStyle = LineStyle.Single;
builder.CellFormat.Borders.Color = System.Drawing.Color.Black;
//builder.CellFormat.HorizontalMerge = Aspose.Words.Tables.CellMerge.Previous;
builder.Write("Text in one cell");
builder.EndRow();
builder.InsertCell();
builder.CellFormat.Borders.LineStyle = LineStyle.Single;
builder.CellFormat.Borders.Color = System.Drawing.Color.Black;
// 此单元格垂直合并到单元格上方,并应为空.
builder.CellFormat.VerticalMerge = Aspose.Words.Tables.CellMerge.Previous;
//builder.CellFormat.HorizontalMerge = Aspose.Words.Tables.CellMerge.None;
builder.InsertCell();
builder.CellFormat.Borders.LineStyle = LineStyle.Single;
builder.CellFormat.Borders.Color = System.Drawing.Color.Black;
builder.CellFormat.VerticalMerge = Aspose.Words.Tables.CellMerge.None;
builder.CellFormat.HorizontalMerge = Aspose.Words.Tables.CellMerge.None;
builder.Write("Text in another cell");
builder.EndRow();
doc.Save(filePath1, Aspose.Words.SaveFormat.Doc);
}