在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
具体思路: 1.先制作Word模版,使用文本框+书签的方式来设计模版; 2.模版制作完之后,根据模版生成新文件,使用File.Copy方法,生成.doc格式新文件; 3.后台取得数据,参照网页渲染的方式标记数据流,方便之后的写入操作; 4.编辑新文件,根据程序中标记与书签的对应关系,利用类库中的方法来修改书签的内容,最后保存文件即可。 优点: 能够自定义元素的位置,方法也很简单易懂,如果只是表格之类的简单格式会很适用。 缺点: 灵活性不好,如果要套打的对象是网页,且不是表格形式的,还原程度不好,而且如果文字内容过多会出现超出文本框范围的情况。 操作过程&代码: 1)第一步,引入对应的程序集 如果不是使用第三方的类库的话,是不需要下载的,只要你的系统完整安装了office,你的系统程序集中就会带有操作Word的程序集。 首先,添加引用Microsoft.Office.Interop.Word,之后,在类中添加相对应的引用: using MSWord = Microsoft.Office.Interop.Word; //这里重命名为MSWord,之后使用的时候就可以简写了 using System.IO;//要操作文件的话,要引用系统IO using System.Reflection; 2)准备工作 MSWord.Application wordApp = new MSWord.Application();//word应用程序变量 MSWord.Document wordDoc;//word文档变量 string TemplateFile = @"D:\Model.doc"; //模版文件的路径, string FileName = @"D:\" + DateTime.Now.ToString("yyyyMMddHHmmssffffff") + ".doc";//新文件的路径 3)拷贝模版生成新文件 File.Copy(TemplateFile, FileName);//首先要拷贝一份文件 object obj_FileName = FileName;//新建一个obj变量用于操作 4)设置操作类型,操作类型有很多中,这里要打开新文件,修改其中的内容 wordDoc = wordApp.Documents.Open(ref obj_FileName);//打开新文件,进行操作 wordDoc.Activate();//设置现在操作的文件 5)依据书签修改word内容 //循环书签,判断书签名称,并为其赋值 foreach (MSWord.Bookmark bm in wordDoc.Bookmarks) { if (bm.Name == "billno") { bm.Select(); bm.Range.Text = "2008"; } if (bm.Name == "dated") { bm.Select(); bm.Range.Text = DateTime.Now.ToString(); } } 6)关闭文件 wordDoc.SaveAs2(obj_FileName);//保存文件 wordDoc.Close();//关闭文档对象 wordApp.Quit();//关闭应用程序对象 7)杀进程,有的情况下,关闭Word文件会不成功,会残留很多word进程 System.Diagnostics.Process[] processes = System.Diagnostics.Process.GetProcessesByName("WINWORD"); foreach (System.Diagnostics.Process p in processes) { bool b = p.MainWindowTitle == ""; if (p.MainWindowTitle == "") { p.Kill(); } } 8)下载 Response.Clear(); Response.AddHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(Path.GetFileName(FileName), System.Text.Encoding.UTF8)); Response.ContentType = "application/msword"; Response.TransmitFile(FileName); Response.Flush(); Response.End(); 转自:https://www.cnblogs.com/jydeng/p/4398500.html
具体思路: 1.先制作Word模版,使用文本框+书签的方式来设计模版; 2.模版制作完之后,根据模版生成新文件,使用File.Copy方法,生成.doc格式新文件; 3.后台取得数据,参照网页渲染的方式标记数据流,方便之后的写入操作; 4.编辑新文件,根据程序中标记与书签的对应关系,利用类库中的方法来修改书签的内容,最后保存文件即可。 优点: 能够自定义元素的位置,方法也很简单易懂,如果只是表格之类的简单格式会很适用。 缺点: 灵活性不好,如果要套打的对象是网页,且不是表格形式的,还原程度不好,而且如果文字内容过多会出现超出文本框范围的情况。 操作过程&代码: 1)第一步,引入对应的程序集 如果不是使用第三方的类库的话,是不需要下载的,只要你的系统完整安装了office,你的系统程序集中就会带有操作Word的程序集。 首先,添加引用Microsoft.Office.Interop.Word,之后,在类中添加相对应的引用: 1 using MSWord = Microsoft.Office.Interop.Word; //这里重命名为MSWord,之后使用的时候就可以简写了 2 using System.IO;//要操作文件的话,要引用系统IO 3 using System.Reflection; 2)准备工作 1 MSWord.Application wordApp = new MSWord.Application();//word应用程序变量 2 MSWord.Document wordDoc;//word文档变量 3 string TemplateFile = @"D:\Model.doc"; //模版文件的路径, 4 string FileName = @"D:\" + DateTime.Now.ToString("yyyyMMddHHmmssffffff") + ".doc";//新文件的路径 3)拷贝模版生成新文件 1 File.Copy(TemplateFile, FileName);//首先要拷贝一份文件 2 object obj_FileName = FileName;//新建一个obj变量用于操作 4)设置操作类型,操作类型有很多中,这里要打开新文件,修改其中的内容 1 wordDoc = wordApp.Documents.Open(ref obj_FileName);//打开新文件,进行操作 2 3 wordDoc.Activate();//设置现在操作的文件 5)依据书签修改word内容 1 //循环书签,判断书签名称,并为其赋值 2 foreach (MSWord.Bookmark bm in wordDoc.Bookmarks) 3 { 4 if (bm.Name == "billno") 5 { 6 bm.Select(); 7 bm.Range.Text = "2008"; 8 } 9 if (bm.Name == "dated") 10 { 11 bm.Select(); 12 bm.Range.Text = DateTime.Now.ToString(); 13 } 14 } 6)关闭文件 1 wordDoc.SaveAs2(obj_FileName);//保存文件 2 wordDoc.Close();//关闭文档对象 3 wordApp.Quit();//关闭应用程序对象 7)杀进程,有的情况下,关闭Word文件会不成功,会残留很多word进程 1 System.Diagnostics.Process[] processes = System.Diagnostics.Process.GetProcessesByName("WINWORD"); 2 foreach (System.Diagnostics.Process p in processes) 3 { 4 bool b = p.MainWindowTitle == ""; 5 if (p.MainWindowTitle == "") 6 { 7 p.Kill(); 8 } 9 } |
请发表评论