具体思路:
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\ 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;//要操作⽂件的话,要引⽤系统IO3 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 }
因篇幅问题不能全部显示,请点此查看更多更全内容