php 动态打印 word,JSP_.net下实现Word动态填加数据打印,今天研究了一下.net下实现Word - phpStudy...
.net下实现Word动态填加数据打印
今天研究了一下.net下实现Word动态填加数据打印的做法,觉得颇有收获~
以前做过Excel相关的东西,所以对OFFICE的COM有一些了解,很顺利的找到了需要引用的COM和其帮助文档~具体做法是在引用里添加 COM --------Microsoft word 11.0 object library, 然后引入命名空间:
复制代码 代码如下:
using WordApplication = Microsoft.Office.Interop.Word.Application;
using Document = Microsoft.Office.Interop.Word.Document;
using Bookmark = Microsoft.Office.Interop.Word.Bookmark;
具体实现代码:
WordApplication word = null;
/**
/// 实现动态添加数据打印预览
///
/// word模板路径
/// 调剂学生相关信息对象
private void PrintPreview(string path, AdStuInfo adStu)
...{
if (word == null)
...{
word = new WordApplication();
}
object oMissing = System.Reflection.Missing.Value; //这个东西找了好久,不像操作Excel,用Type.mising还不行.
object path1 = (object)path;
Document doc = null;
doc = word.Documents.OpenOld(ref path1, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing);
替换书签#region 替换书签
object markName = "报考单位";
Bookmark bm = doc.Bookmarks.get_Item(ref markName);
bm.Range.Text = adStu.SiSch;
markName = "报考专业";
bm = doc.Bookmarks.get_Item(ref markName);
bm.Range.Text = adStu.SiMa;
markName = "考生姓名1";
bm = doc.Bookmarks.get_Item(ref markName);
bm.Range.Text = adStu.Name;
markName = "考生编号";
bm = doc.Bookmarks.get_Item(ref markName);
bm.Range.Text = adStu.No;
markName = "调剂专业";
bm = doc.Bookmarks.get_Item(ref markName);
bm.Range.Text = adStu.AdMa;
markName = "打印时间";
bm = doc.Bookmarks.get_Item(ref markName);
bm.Range.Text = GetDate().ToString();
markName = "考生姓名2";
bm = doc.Bookmarks.get_Item(ref markName);
bm.Range.Text = adStu.Name;
#endregion
word.Visible = true;
doc.PrintPreview();
}具体解释: 首先有一个模板.doc文件,在该模板内需要添加数据的地方设置成书签,.net程序所要的事情就是打开该模板,用具体需要添加的值去替换先设定好的书签,然后返回Word的打印预览页面,思路很简单~但是问题也是有滴~~
这个程序是做打印我们学院研究生办发复试生调卷函用的,但是表格是从学校研究生部那弄来的,主要还是在那边盖的章~所以就只能用那些表格来打,但是给的表格留的空实在太小,没法用同样的字体给打上去,怪就只能怪研究生部根本没想到我们这会有这个高级的东西~~哈哈~估计一般都是手工填的~~~明天过去不知道具体要怎么弄,估计这东西在打印调卷函是发挥不出作用了~~~留着以后肯定有用!
4月16日修改:
几天前做的仔细想想还是有需要改进的地方.我前面做的只是一个个文档的填,一个个的打印,考虑资料上百个以后这样做打印机的打印的效率不高,因为每次只给打印机发送一个打印任务,它接受下一个任务是需要时间的,所以我的想法是把需要打印的文档生成成一个文档,这样不但可以保存文档,还可以只要向打印机发送一个任务就可以打印资料了,NB的打印机打印速度是很快的~~
把具体的操作写下来吧~思路是打开两个word文档(当然,生成过程中全不可见),一个还是按照前面说的替换书签,但是不做打印处理,而是复制到另外一个文档(该文档存储所有已经生成好的表格,最后得到的就是这个word文档,打印或者保存随便他们).具体的代码如下:
先在using里引如:
using Range = Microsoft.Office.Interop.Word.Range;
doc.Content.Copy(); //复制doc里的内容,doc是每次做替换书签的文档.
object save = false;
doc.Close(ref save, ref oMissing, ref oMissing); //关闭doc.
Range range = printDoc.Content; //全中printDoc里的全部内容,printDoc是目标保存文档.
range.Collapse(ref oMissing); //确定粘贴的位置,其实这个地方我想放一个有效的参数,把粘贴的位置设为文档的末尾,而不是用默认的文档的最前面,但是帮助文档是VB写的,传了一个Direction:=wdCollapseEnd的东东,我弄半天没弄出来,亏我还是懂VB的~~伤心~以至于我都忘了传个空值过去,卡了老半天!谢谢某人和我发了几条短信,就一下把我打通了~
range.Paste(); //粘贴到目标位置,一次填写就完成了.
虽然是这样,但是在生成目标文档的时候也是很耗资源的,我看了一下那程序竟然占了100多M的内存!!而且~~而且~~我的机器在前两次实验都没顶住!死机了~~当时真是在抓狂了~谁知道后来几次竟然无声无息的成功!可是想想学院那机器能扛住么~~哎继续优化吧!这次把界面也改了一下,上面的生成在一的单独线程里,以至于主界面不会像死了样的,而且在主界面上还做了个显示生成状态的Lable,这东西还真管用~后面两次的实验,看着已生成数目超过前两次死机的数目~~紧张的心情缓解了~再看着数目超过100~~高兴了~最后慢慢接近完成数目时~~兴奋得抓狂!!!!!哈~~
哎~废话多了点~有用的就那么几行代码~
相关阅读:
php小技巧 把数组的键和值交换形成了新的数组,查找值取得键
一个基于PDO的数据库操作类(新) 一个PDO事务实例
linux Intel 845集成显示驱动下载
ECMAScript类型转换详解
JSP入门初级教程之plugin的使用
Java 正则表达式详解
jqeury eval将字符串转换json的方法
解决读取IIS服务器绝对路径错误的方法
Windows Server 2008升级考试出炉
微软宣布Windows 7和Windows 2008 R2上市时间表
讲两件事:1.this指针的用法小探. 2.ie的attachEvent和firefox的addEventListener在事件处理上的区别
基于jquery的监控数据是否发生改变
Windows注册表更加安全的设置技巧
Firefox window.close()的使用注意事项
php 动态打印 word,JSP_.net下实现Word动态填加数据打印,今天研究了一下.net下实现Word - phpStudy...相关推荐
- select下拉框动态获取数据
需求:select下拉框中的数据是从后台接口中获取的,而不是自己写的假数据 步骤:(这里是用jquery及ajax发送请求) 一.页面上导入jquery在线资源 二.代码实列如下(仅供参考) < ...
- java下拉框读取数据库数据_在一个jsp页面实现二级下拉框联动,实时读取数据库数据...
在一个jsp(SUN企业级应用的首选)页面实现二级下拉框联动,实时读取数据库数据,这个方法非常使用,只需要修改很小的地方就可以使用.设计的文件,serch.jsp(SUN企业级应用的首选),main. ...
- SpringBoot导出word模板并动态渲染数据
导出word模板并动态渲染数据 一.需求介绍 背景:需要导出word模板的时候,有些数据是动态或者图片等不确定因素的时候.根据需求定制好的模板要求填充数据,那么这个时候就需要进行根据word模板进行动 ...
- Android下拉刷新完全解析,教你如何一分钟实现下拉刷新功能 (转)
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/9255575 最 近项目中需要用到ListView下拉刷新的功能,一开始想图省事,在 ...
- 将Word文档转换为PDF时出现“PDFmaker文件遗失,要在修复模式下运行安装程序吗?”的提示
鼠标右击将Word文档转换为PDF时出现"PDFmaker文件遗失,要在修复模式下运行安装程序吗?"的提示,运行完安装程序以后,问题还是没有解决,依旧有提示,这是什么原因,我电脑装 ...
- java 解析word模板为xml, 动态填充数据到xml,最后输出word文档
java 解析word模板为xml, 动态填充数据到xml,最后输出word文档 在项目中, 一开始是使用java Apache poi 根据word模板生成word报表, 后面发现框架有个低版本的p ...
- java生成word文档_Java多种方式动态生成doc文档
本来是要在Android端生成doc的(这需求...),最后方法没有好的方法能够在Android上做到完美,最后还是只能搬迁到服务器.不浪费,还是记录下各框架不支持Android的原因以及他们的特点. ...
- 使用freemarker生成word文档(包含遍历多条数据、图片)
在做项目的过程中,有时候需要把数据生成word文档,常用的有POI.ITEXT等,在这篇文章中我们使用freemarker模板来生成我们想要的word文档. 首先我们需要使用office word来编 ...
- 【最强解决办法】日式打印图片显示不全(word预览却是全的),打印画质下降、转PDF下降等问题
原文带图片链接:[最强解决办法]打印图片显示不全(word预览却是全的),打印画质下降.转PDF下降等问题 最近写论文,由于学会要求PDF稿内的图片大于300dpi,于是在word那儿折腾了半天. 有 ...
最新文章
- junit集成Hamcrest测试集合中某个属性是否包含特定值
- 变换判断滤波器类型_7.4 低通IIR滤波器的频率变换
- Spring Boot 应用系列 1 -- Spring Boot 2 整合Spring Data JPA和Druid,双数据源
- Java代码-CPU占用过高排查思路
- 卷积神经网络经典模型要点
- 获取js里添加的css文件,用JS添加一个css文件
- Springboot/Cloud集成Sentinel进阶实战
- 支配计算领域44年之后,摩尔定律的下一步该往哪里走?
- (31)Gulp 构建样式文件
- 在Ubuntu下后台持续运行Python程序
- ITU-R BT601/BT709 BT656/BT1120区别与联系
- 两款Java中小医院信息管理系统源码
- 基于模型驱动低代码平台的实现原理
- 怎样修改用户的计算机配置文件,用户配置文件
- DateTime类型的12小时制与24小时制
- 6.#闲谈|小编一手腾讯课堂送花脚本 javascript
- pow函数以及math.h的一些坑
- 嵌入式系统大作业——基于QT的3D模型展示
- 苹果6s登录id显示无法连接服务器,iPhone6s appleID无法登入
- 15款免费WiFi入侵破解安全测试工具