首页 > 编程语言 >Aspose.Words利用Word模板导出Word文档

Aspose.Words利用Word模板导出Word文档

时间:2022-11-16 18:02:51浏览次数:58  
标签:Word Add Columns Words dt2 Aspose dt1 模板 row

      今天工作中遇到了导出Word文档的问题,但是在搜索Aspose.Words 导出Word文档时发现网上的方法都是有头没尾的,有的只有一小段实例,让人看着摸不着头脑。借着https://www.cnblogs.com/cracker/archive/2012/07/21/AspnetExportWord.html这篇文章,把功能给做了出来,在此做个笔记。

       利用Aspose.Words导出Word文档最重要的就是模板的建立。

       模板设计的方法如下:

      1.先建立好模板

                         

 

 

 

 

       2.在模板中插入   域  来使数据可以正确被替换。TableStart:All 表示表中所有的绑定数据从这个地方开始,必须要有TableEnd:All做为结束。 表格中循环部分的数据则是由«TableStart:Item»«列名»,«列名»«TableEnd:Item»结束 ,中间部分则只需要«列名»即可

        在模板中插入域的方法如下:(office2016版本)

        ①:位置 :插入--文档部件--域

       

 

        ②: 域 中类型选择邮件合并、域名选择MergeField,然后在右边③域名中输入绑定的名称。到此模板建立就完成了。

 

 

 

 

接下来的代码部分:

        public KeyValuePair<string, byte[]> DownWord(int sysNo)
        {
            var path = $"{hostingEnvironment.ContentRootPath}\\XXXX.doc";

            if (!File.Exists(path))
            {
                throw new FriendlyException("文件不存在");
            } 

            var doc = new Aspose.Words.Document(path); 
            
            //ds指DataSet,已经组装好的DataSet
            //利用ds数据替换模板中的数据
            doc.MailMerge.ExecuteWithRegions(ds);

            byte[] content = null;
            using (var ms = new MemoryStream())
            {
                doc.Save(ms, Aspose.Words.SaveFormat.Doc);
                content = ms.GetBuffer();
            }

            return new KeyValuePair<string, byte[]>(string.Format("{0}_{1}.doc", "xxxx导出", DateTime.Now.ToString("yyyy_MM_dd")), content);
        } 

  组装数据的方法

private DataSet GetOneDs(MeetingModel model, List<C2MeetingSignModel> emps)
        {
            DataTable dt1 = new DataTable("All");//对应列表的中的 TableStart:All
            dt1.Columns.Add("meetingDate"); 
            dt1.Columns.Add("applyEmployeeName");
            dt1.Columns.Add("meetingTitle");
            dt1.Columns.Add("applyDeptName");
            dt1.Columns.Add("meetingName");
            DataRow dr1 = dt1.NewRow();

            dr1["meetingDate"] = model.ApplyBeginTime.Value.ToString("yyyy-MM-dd HH:mm:ss") + "至" + model.ApplyEndTime.Value.ToString("yyyy-MM-dd HH:mm:ss");
dr1["applyEmployeeName"] = model.ApplyEmployeeName;// dr1["meetingTitle"] = model.MeetingTitle;// dr1["applyDeptName"] = model.ApplyDeptName;// dr1["meetingName"] = model.MeetingName;// dt1.Rows.Add(dr1);
DataTable dt2 = new DataTable("Item");//对应列表的中的 TableStart:Item dt2.Columns.Add("sort"); dt2.Columns.Add("DeptName"); dt2.Columns.Add("Name"); int sort = 0; if (emps.Count <= 0) {
          //为了防止导出的时候导出了绑定的模板,如果导出的模板中没有数据会默认导出绑定模板 var row = dt2.NewRow(); row[0] = ""; row[1] = ""; row[2] = ""; dt2.Rows.Add(row); } else { foreach (var item in emps) { sort++; var row = dt2.NewRow(); row[0] = sort; row[1] = item.DeptName; row[2] = item.EmpName; dt2.Rows.Add(row); } } DataSet ds = new DataSet(); ds.Tables.Add(dt1); ds.Tables.Add(dt2); return ds; }

  

 

标签:Word,Add,Columns,Words,dt2,Aspose,dt1,模板,row
From: https://www.cnblogs.com/wofeiliangren/p/16896839.html

相关文章

  • 如何通过Java 在 Word 中更改字体颜色
    在Word文档中使用不同的字体颜色既可以丰富文档外观,也能突出强调某些重点部分。当Word文档包含大量内容时,可以使用FreeSpire.DocforJava轻松更改Word文档中的字体颜色。......
  • WordPress标题分隔符”-“被转义为“–”怎么办?
    按照百度搜索资源平台《百度搜索网页标题规范:让标题回归标题本身》百度官方文档参考,如果WordPress标题里出现不规范“&#8211”这是不符合SEO规范,而我们要做就是把正常”-“......
  • Word16 供应链的管理论文office真题
    1.课程的讲解之前,先来对题目进行分析,首先需要在考生文件夹下,将Wrod素材.docx文件另存为Word.docx,后续操作均基于此文件,否则不得分。  2.这一步非常的简单,打开下载素材......
  • Word17 学生儿童医保扣款方式更新的通知
    1.课程的讲解之前,先来对题目进行分析,首先需要在考生文件夹下,将Wrod素材.docx文件另存为Word.docx,后续操作均基于此文件,否则不得分。  2.这一步非常的简单,打开下载素材......
  • Word15 财务部年度报告office真题
    1.课程的讲解之前,先来对题目进行分析,首先需要在考生文件夹下,将Wrod素材.docx文件另存为Word.docx,后续操作均基于此文件,否则不得分。   2.这一步非常的简单,打开下载素......
  • Word14 互联网络发展状况统计报告office真题
    1.课程的讲解之前,先来对题目进行分析,首先需要在考生文件夹下,将Wrod素材.docx文件另存为Word.docx,后续操作均基于此文件,否则不得分。  2.这一步非常的简单,打开下载素材......
  • Word13 《经费联审结算单》模板office真题
    1.根据题目一的要求,打开素材文件,点击【文件】-【另存为】,选择【当前文件夹】,命名为Word。   2.根据题目二的要求,在【布局】里点击【页面设置】的右下角,打开页面设......
  • Endnote在word中插入参考文献崩溃的另一个原因——mathtype和快捷键Alt+2
    EndnoteX9和20插入word时会崩溃,网上的方法大多是清除域代码和清除自动校对什么的,对我来说这些方法都不管用而且不合理。后来发现可能是Mathtype的加载项与endnote有冲突,......
  • GL-Learning new words 20221115
    GLLearingnewwords20221115HowdoyoulearnnewwordsinEnglish?WhenIcomeacrossawordthatIdon'tknow,Idirectlycheckthepronunciationanddefini......
  • 百度富文本ueditor实现导入word并将内容显示到编辑器中
    如何做到ueditor批量上传word图片?1、前端引用代码<!DOCTYPE html PUBLIC "-//W3C//DTDXHTML1.0Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-tra......