最近在做一个.net项目需要实现网站导出word报告功能,最终没有选择MS的word组件,因为过于庞大复杂。最终选择较为轻量级的Aspose.word组件。现在将使用Aspose.word组件的一些步骤及细节分享给大家,希望大家以后开发的时候少走弯路。
1.使用Aspose.word组件离不开word模版的建立,所以第一步就是建立word模版,即你最终要生成报告的形式。做模版这个地方就使用到了强大的word,有很多方法:A.在word里添加书签;B.在word里添加MergeField。这里选择第二种做模版的方式来演示。
打开word,找到插入菜单,选择文档部件,选择域:
找到MergeField,在域名文本框输入标识文字:
最终模版:
2.word模版做完以后就是在项目中添加对Aspose.word组件的引用了。
在VS里打开解决方案下的项目名,右键选择添加引用,找到Aspose.word.dll文件:
3.代码的编写这一块就很简单的,前台aspx界面不多说,主要讲aspx.cs代码,依次是:
A.添加Aspose.word命名空间,因为用到了文件的输入输出,所以别忘了IO:
using Aspose.Words; using Aspose.Words.Saving; using System.IO;
B.找到word模版,规定输出文件:
string tempPath = Server.MapPath("xixi.doc"); string outputPath = Server.MapPath("失效检验案例库完整报告.doc");
C.载入word模版:
var doc = new Document(tempPath);
D.提供数据源,这里使用数组加Dataset的方法:
String[] fieldNames = new String [] { "CaseName", "CompanyName", "caseInfo", "caseReason", "caseSummary", "caseAdvice" }; Object[] fieldValues = new Object[] { ds.Tables[0].Rows[0]["caseName"].ToString(), ds.Tables[0].Rows[0]["companyName"].ToString(), ds.Tables[0].Rows[0]["caseInfo"].ToString(), ds.Tables[0].Rows[0]["caseReason"].ToString(), ds.Tables[0].Rows[0]["caseSummary"].ToString(), ds.Tables[0].Rows[0]["caseAdvice"].ToString() };
E.合并模版:
doc.MailMerge.Execute(fieldNames, fieldValues);
F.保存合并后的文档:
doc.Save(outputPath);
4.最终效果。
谢谢!!!!