string tmppath="Test.doc";//获取模板
Document doc = new Document(tmppath); //载入模板
DataTable dt_search = search.SearchDataByProcStore(tablename, where);//获取要写入word的数据源
// 循环当前表的列数
for (int i = 0; i < dt_search.Columns.Count; i++)
{
string fieldName = dt_search.Columns[i].ToString();// 字段名
// 循环当前表的行数
for (int j = 0; j < dt_search.Rows.Count; j++)
{
// 开始定义标签,例如:PO_ID1、PO_ID2、PO_ID3
if (doc.Range.Bookmarks["PO_" + fieldName + j + ""] != null)
{
Bookmark mark = doc.Range.Bookmarks["PO_" + fieldName + j + ""];//设置标签
mark.Text = dt_search.Columns[i].Table.Rows[j][i].ToString();//并且赋值
}
if (doc.Range.Bookmarks["PO_" + fieldName + ""] != null)
{
Bookmark mark = doc.Range.Bookmarks["PO_" + fieldName + ""];
mark.Text = dt_search.Columns[i].Table.Rows[j][i].ToString();
}
}
}
Aspose.Words.DocumentBuilder builder = new Aspose.Words.DocumentBuilder(doc);//保存
//word中有Table的情况
// 判断word中是否存在当前标签
if (doc.Range.Bookmarks["PO_regTable" + k + ""] != null)
{
builder.MoveToBookmark("PO_regTable" + k);// 定位到书签去
// 获取动态表格的表头
string[] strTitleArry = Request.QueryString["wordTitle"].Split(';');
// 取表头数组下的名字
string[] strTitleName = strTitleArry[k].Split(',');
// 向左移动
builder.RowFormat.LeftIndent = -20;
// 动态生成标题
for (int j = 0; j < strTitleName.Length; j++)
{
string filedName = strTitleName[j];
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.VerticalAlignment = CellVerticalAlignment.Center;//垂直居中对齐
builder.ParagraphFormat.Alignment = ParagraphAlignment.Center;//水平居中对齐
builder.Write(filedName);
}
builder.EndRow();
doc.Range.Bookmarks["PO_regTable" + k].Text = ""; // 清掉标示
for (var m = 0; m < dt_search.Rows.Count; m++)
{
for (var n = 0; n < dt_search.Columns.Count; n++)
{
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.VerticalAlignment = CellVerticalAlignment.Center;//垂直居中对齐
builder.ParagraphFormat.Alignment = ParagraphAlignment.Center;//水平居中对齐
builder.Write(dt_search.Rows[m][n].ToString());
}
builder.EndRow();
doc.Range.Bookmarks["PO_regTable" + k].Text = ""; // 清掉标示
}
}
}
doc.Save("NewTest.doc", SaveFormat.Doc);//直接保存文件
----可以直接另存为pdf的格式,但是这里的Aspose.word.dll 的版本必须是14.1.0.0,因为到现在我只发现这个版本支持中文,其他的版本还没有发现支持中文
doc.Save("NewTest.pdf", SaveFormat.Pdf);