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);

 

运行、看下结果:

由于我的是破解版,没有清缓存文件,所以上面有个红头,请忽略

 

posted @ 2020-07-20 19:58  湘龍  阅读(731)  评论(0)    收藏  举报