Aspose.Words for Net 根据Word模板导出Word
一:使用Word的域制作模板文件
1:简单的模板
开始制作模板:
1:创建表头及空行,定位第一个单位格,在插入->文档部件->域,在域的操作页面选择邮件合并,(我测试时用的邮件合并,可选其他) ,注意选中后在域代码下的输入框中默认会有默认代码,注意不要动默认代码,在默认代码后空格,然后接着写自己的代码
代码说明:
<TableStart:All> 是表示从名为All的 DataTable 里面获取数据
<TableEnd:All>就是结束的位置
中间的<<Number>> <<Name>>则对应数据源中的字段
以上则将我们的模板建好了,
下面撸代码:
模拟几个数据,
public DataSet db() { DataTable dt1 = new DataTable("All"); dt1.Columns.Add("Number"); dt1.Columns.Add("Name"); dt1.Columns.Add("Age"); DataRow dr1 = dt1.NewRow(); dr1["Number"] = 1; dr1["Name"] = "张三"; dr1["Age"] = 20; dt1.Rows.Add(dr1); dr1 = dt1.NewRow(); dr1["Number"] = 2; dr1["Name"] = "李四"; dr1["Age"] = 23; dt1.Rows.Add(dr1); DataTable dt2 = new DataTable("Item"); dt2.Columns.Add("bh"); dt2.Columns.Add("mc"); DataRow dr2 = dt2.NewRow(); dr2["bh"] = 10010; dr2["mc"] = "AAA"; dt2.Rows.Add(dr2); DataSet ds = new DataSet(); ds.Tables.Add(dt1); ds.Tables.Add(dt2); return ds; }
调用:
string path = Server.MapPath("~/template.doc"); Document doc = new Document(path); doc.MailMerge.ExecuteWithRegions(db());
string[] key = new string[] { "week" };
object[] value = new object[] { "一" };
doc.MailMerge.Execute(key, value);
doc.Save(System.Web.HttpContext.Current.Response, "C00.doc", ContentDisposition.Attachment, null);
运行、看下结果:
由于我的是破解版,没有清缓存文件,所以上面有个红头,请忽略