下面将针对农业植物测试报告来分析具体的代码实现:
复制代码
//生成WORD程序对象和WORD文档对象
Microsoft.Office.Interop.Word.Application appWord = new Application();
Microsoft.Office.Interop.Word.Document doc = new Document();
object oMissing = System.Reflection.Missing.Value;//这个是什么东西,我始终没搞明白-_-
//打开模板文档,并指定doc的文档类型
object objTemplate = Server.MapPath(p_TemplatePath);
object objDocType = WdDocumentType.wdTypeDocument;
doc = (Document)appWord.Documents.Add(ref objTemplate, ref objFalse, ref objDocType, ref objTrue);
//获取模板中所有的书签
Bookmarks odf = doc.Bookmarks;
string[] testTableremarks = { "ApplyNo", "AuditingDate", "Auditor", "CheckDate", "Checker"};
string[] testTablevalues = { "ApplyNo", "AuditingDate", "Auditor", "CheckDate", "Checker",};
//循环所有的书签,并给书签赋值
for (int oIndex = 0; oIndex < testTableremarks.Length; oIndex++)
{
obDD_Name = WD + testTableremarks[oIndex];
doc.Bookmarks.get_Item(ref obDD_Name).Range.Text = p_TestReportTable.Rows[0][testTablevalues [oIndex]].ToString();//此处Range也是WORD中很重要的一个对象,就是当前操作参数所在的区域
}
//第四步 生成word,将当前的文档对象另存为指定的路径,然后关闭doc对象。关闭应用程序
object filename = Server.MapPath(p_SavePath) + "Testing_" + DateTime.Now.ToShortDateString() + ".doc";
object miss = System.Reflection.Missing.Value;
doc.SaveAs(ref filename, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss);
object missingValue = Type.Missing;
object doNotSaveChanges = WdSaveOptions.wdDoNotSaveChanges;
doc.Close(ref doNotSaveChanges, ref missingValue, ref missingValue);
appWord.Application.Quit(ref miss, ref miss, ref miss);
doc = null;
appWord = null;
this.Hid_ShowMessage.Value = "生成成功!";
上述代码就是一个通过模板文件生成WORD的过程。其实也就是一个替换书签内容的过程。
在开发的过程中,有些数据是动态增加的,假如我要向一个表格中动态的添加几行数据,就无法用替换书签的方式来进行操作,需要通过程序在文档页面的表格中添加行。
向表格中添加行,有两种操作形式:一种是在WORD模板中已经存在了一个表格。一种是我们在程序中直接添加一个表格对象。










