一、創建模板,使用MergeField綁定數據
二、使用數組提供數據源
三、模板上使用書簽,插入標記位置
四、創建循環數據的模板,這里的循環類似于頁面的for循環結構,不局限于形式table
五、使用Datatable提供數據源(配合四)
六、綁定帶有子循環的數據模塊
七、使用DataSet提供數據源
八、在書簽位置插入另一個文檔的內容
向word文檔中插入圖片(方法一)
xiangword文檔中插入圖片(方法二)
代碼技巧:
創建OOXML圖表
數據標簽的設置?
二、使用Aspose將圖像轉換為PDF
文檔合并?
publicActionResultdemo2(){try{Documentdoc?=newDocument();????????????????doc.RemoveAllChildren();intrecordCount?=?5;varguid?=Guid.NewGuid().ToString();stringoutPath?=?Server.MapPath("~/ReportModels/"+?guid?+".docx");for(inti?=?1;?i?<=?recordCount;?i++){stringModelPath?=?Server.MapPath("~/ReportModels/模板.docx");//DocumentsrcDoc?=newDocument(ModelPath);DocumentBuilderbuilder?=newDocumentBuilder(srcDoc);Dictionary?dic?=newDictionary();????????????????????dic.Add("demo1","活動demo"+i);????????????????????dic.Add("demo2","危險源demo"+i);????????????????????dic.Add("demo3","編號demo"+i);????????????????????dic.Add("demo4","分布demo"+i);????????????????????dic.Add("demo5","事件demo"+i);this.MailByDic(dic,?builder);DataTabletable1?=newDataTable("Table");????????????????????table1.Columns.Add("demo6");????????????????????table1.Columns.Add("demo7");????????????????????table1.Rows.Add(newobject[]{"測試1","測試1"+i});????????????????????table1.Rows.Add(newobject[]{"測試2","測試3"+i});????????????????????table1.Rows.Add(newobject[]{"測試3","測試3"+i});????????????????????table1.Rows.Add(newobject[]{"測試3","測試3"+i});????????????????????srcDoc.MailMerge.ExecuteWithRegions(table1);//doc.AppendDocument(srcDoc,ImportFormatMode.UseDestinationStyles);}doc.Save(outPath,SaveFormat.Docx);returnJson(new{IsSuccess?=true,?Message?="報告生成成功"},JsonRequestBehavior.AllowGet);}catch(Exceptionex){LogHelper.WriteLog("DemoController.demo2",?ex);returnnull;}}///?///?通過字典執行word渲染///?///?///?publicvoidMailByDic(Dictionary?dic,DocumentBuilderbuilder){foreach(stringkeyindic.Keys){builder.MoveToMergeField(key);????????????????builder.Write(dic[key]);}}