您的当前位置:首页正文

asp.net使用动态模版导出word

2020-01-24 来源:尚车旅游网
asp.net使⽤动态模版导出word

具体思路:

  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 }

因篇幅问题不能全部显示,请点此查看更多更全内容