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", "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 }

asp.net使用动态模版导出word的更多相关文章
- PowerDesiger 15逆向生成工程E-R图及导出word表格
应用环境:win8(64位)+oracle10g(32位)服务端+PowerDesigner15 需求:oracle数据库中的表结构是web工程框架hibernate 自动生成,现需要将数据库中已有的 ...
- ASP.NET导出word实例
ASP.NET导出word实例 最近遇到一个题目就是如何在asp.net中将数据导出到word中,由于数据是动态的,所以需要在后台拼出想要的的格式,翻遍了网页找出了一个比较满意的代码,感谢那位高手.代 ...
- ASP.NET MVC 导出Word报表
最近要做MVC导出Word报表功能.查了查资料发现一个好用的插件就是Aspose.Word.这个插件也很有名气,也很好用. 1.首先就是引用该插件 2.填充Word模版 3.后台操作 private ...
- 【C#点滴记录】ASP.NET 使用C# 导出Word 和Excel
原文摘自 慧优米网,链接地址:http://huiyoumi.wang/upload/forum.php?mod=viewthread&tid=797&extra= 好了正文来了 今天 ...
- 在ASP.NET中将GridView数据导出到Word、Excel
在ASP.NET中将GridView数据导出到Word.Excel asp.net,导出gridview数据到Word,Excel,PDF #region Export to Word, Exce ...
- Asp.net通过模板(.dot/Html)导出Word,同时导出图片
一.Office组件导出Word(服务器配置麻烦) 需要引用Office的DLL,在下文的附件中,不同的Offic版本用的不一样,虽然高级版本可以兼容低级的,不过,还是统一版本最好 贴上核心代码(转载 ...
- Java使用IText(VM模版)导出PDF,IText导出word(二)
===============action=========================== //退款导出word public void exportWordTk() throws IOE ...
- java 导出word 并下载
记录一下导出操作 源码: /************ * 导出word 并下载 * @param id 房号记录编号 * ***********************/ @RequestMappin ...
- 导出Excel And 导出word
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default6.aspx. ...
随机推荐
- 织梦提交表单(提交留言)前的js校验
第一种情况:页面有引入jq的 在form标签上加上id <form action="/plus/diy.php" enctype="multipart/form-d ...
- Android 使用正则表达式验证身份证号是否符合规则
我国当前的身份证号分为三种: 一.15位身份证号 二.18位身份证号(前17位位数字,最后一位为字母x) 三.18为身份证号(18位都是数字) 具体验证请参考下面代码: /** * 验证身份证号是否符 ...
- 蜻蜓fm面试
一面: 面试官首先看简历上写了在腾讯的实习,然后就探讨了半天,各种虚拟化的技术.... 说完之后,估计都半小时过去了,然后就又说了一下你用什么语言,你做的东西都比较偏底层呢,然后你对工作有什么要求吗? ...
- flask-login 整合 pyjwt + json 简易flask框架
现在很多框架都实现前后端分离,主要为了适应以下几个目的: 1,前后端的分离,可以使前端开发和后端开发更加分工明确,而不是后端还需要在视图模板中加入很多{% XXXX %}标签 2,是为了适应跨域调用或 ...
- 完爆Facebook/GraphQL,APIJSON全方位对比解析(三)-表关联查询
相关阅读: 完爆Facebook/GraphQL,APIJSON全方位对比解析(一)-基础功能 完爆Facebook/GraphQL,APIJSON全方位对比解析(二)-权限控制 自APIJSON发布 ...
- docker 部署Spring Boot:Docker化Spring Boot应用程序
第一章 1.创建项目存放目录 mkdir /root/sproot -p 2.准备好Spring Boot应用程序 jar 包 testrest.jar 第二章 1. 安装docker 在所有节点执行 ...
- MODIS 数据产品预处理
MODIS 数据产品预处理 1 MCTK重投影 第一步:安装ENVI的MCTK扩展工具 解压压缩包,将其中的mctk.sav与modis_products.scsv文件复制到如图所示,相应的ENVI ...
- MOSFET中的重要参数
最近在调试MOSFET电路中,发现了更多问题,比如同样的PI反馈控制电路可以很好的控制PMOS工作,却对NMOS不能很好控制.当然你肯定会说那是因为PMOS和NMOS不同呀,这自然没有错,我在上一篇文 ...
- 验证Xpath和CSS 路径是否有效
XPath定位和CSS定位在Selenium中是经常使用的. 在FireFox浏览器和Chrome浏览器,可以使用这样的方法来验证定位是否准确. 以Chrome浏览器做范例 按键盘的F12 进入开发者 ...
- Yaml学习文档
pdf文档地址 http://yaml.org/spec/ JS-Yaml demo地址 http://nodeca.github.io/js-yaml/