问题描述
大家好,我现在做的项目是用户在提交各种比较复杂申请表,在页面上录入各项内容,然后需生成word文档,因为申请表的格式固定,我以前的做法是,一、首先在word中画好表格,在需插入内容的地方标上书签,做成模板放在服务器上,然后页面生成word时去调用这个模板,把对应的内容插入到书签中,再保存成一个新的word文档放在服务器上。这种方法的缺点是,由于内容很多,需要做很多书签,容易出错,而且由于有大文本,格式也不好控制。二、在页面上自己把表格设置好,设置成word一样的格式,然后用javascript把页面上的表格导出到word中,这种方式不仅是页面的格式不好控制,word中的格式不好控制。请各位大侠指导指导,还有什么好的方法生成word文档,谢谢!比较简单,适用于大文本。谢谢!
解决方案
解决方案二:
生成word文档示例privateWord.ApplicationG_wa;//定义Word应用程序字段privateobjectG_missing=//定义G_missing字段并添加引用System.Reflection.Missing.Value;privateFolderBrowserDialogG_FolderBrowserDialog;//定义浏览文件夹字段privateobjectG_str_path;//定义文件保存路径字段privatevoidbtn_New_Click(objectsender,EventArgse){btn_New.Enabled=false;//将新建按钮设置为不可用ThreadPool.QueueUserWorkItem(//开始线程池(pp)=>//使用lambda表达式{G_wa=newMicrosoft.Office.Interop.Word.Application();//创建应用程序对象objectP_obj="Normal.dot";//定义文档模板Word.DocumentP_wd=G_wa.Documents.Add(//向Word应用程序中添加文档refP_obj,refG_missing,refG_missing,refG_missing);G_str_path=string.Format(//计算文件保存路径@"{0}{1}",G_FolderBrowserDialog.SelectedPath,DateTime.Now.ToString("yyyy年M月d日h时s分m秒fff毫秒")+".doc");P_wd.SaveAs(//保存Word文件refG_str_path,refG_missing,refG_missing,refG_missing,refG_missing,refG_missing,refG_missing,refG_missing,refG_missing,refG_missing,refG_missing,refG_missing,refG_missing,refG_missing,refG_missing,refG_missing);((Word._Application)G_wa.Application).Quit(//退出应用程序refG_missing,refG_missing,refG_missing);this.Invoke(//调用窗体线程(MethodInvoker)(()=>//使用lambda表达式{MessageBox.Show(//提示已经创建Word"成功创建Word文档!","提示!");btn_display.Enabled=true;//启用显示按钮}));});}
解决方案三:
这些网上例子很多吧