送分了。。。ASP.NET 打印并下载,服务器上一模版,然后复制模版并进行赋值,然后打印下载
string pfile = "模版2.doc";
string pathfile=System . Configuration . ConfigurationManager . AppSettings [ "FilePath" ] . ToString();//通过配置文件获取路劲
string pfilename=Guid . NewGuid() . ToString();
Object file = pathfile + "TXT\\" + pfile;//此处为绝对路径,也可以设置相对路径
Object filename = pathfile + pfilename + ".doc";
ApplicationClass wordApp = new ApplicationClass();
wordApp . Visible = false;
Document doc = new Document();
Document docname = new Document();
Document printdoc = new Document();
String id_ = Request [ "id" ] . ToString();
String uid = Request [ "bid" ] . ToString();
DAO_YW_tddjsq tddj = new DAO_YW_tddjsq();
dao_yw_yj yj=new dao_yw_yj();
DataRow dar=yj . GetsqxxByID(uid) . Rows [ 0 ];
DataRow dr = tddj . GetsqxxByID(id_) . Rows [ 0 ];
File . Copy(file . ToString() , filename . ToString());
object nullobj = System . Reflection . Missing . Value;
doc = wordApp . Documents . Open(ref file , ref nullobj , ref nullobj , ref nullobj , ref nullobj , ref nullobj , ref nullobj , ref nullobj , ref nullobj , ref nullobj , ref nullobj , ref nullobj , ref nullobj , ref nullobj , ref nullobj , ref nullobj);
object markName = "id";//id
Bookmark bm = doc . Bookmarks . get_Item(ref markName);
bm . Range . Text = dr [ "ID_" ] . ToString();
markName = "ywlx";//登记类型
bm = doc . Bookmarks . get_Item(ref markName);
bm . Range . Text = dr [ "ywlx" ] . ToString();
markName = "tdsyzmc";//土地申请人名称
bm = doc . Bookmarks . get_Item(ref markName);
bm . Range . Text = dr [ "tdsyzmc" ] . ToString();
object missingValue = Type . Missing;
Range range = printdoc . Content;
doc . Content . Copy();
object save = false;
range . Collapse(ref nullobj);
range . Paste();
doc . Close(ref save , ref nullobj , ref nullobj);
wordApp . Visible = true;//导出后显示word
printdoc . PrintPreview();//显示打印预览
string filenameS = pathfile + pfilename + ".doc";
File . Delete(filenameS);
代码如上,我做的是一个网页上打印服务器的word文档,服务器上有个模版,
复制模版然后对标签赋值,
然后打印,下载!问题是在服务器上可以打印下载,但是到了客户端就不可以了!没反应!急急急!!!
...全文
请发表友善的回复…
发表回复
零落飘摇 2013-03-06
- 打赏
- 举报
撒分了!不去纠结了!IE的问题!
小程序员 2013-02-22
- 打赏
- 举报
调用的是本机的打印机,你在服务器运行的话调用的就是服务器的打印机,而不是客户端的打印机,可以用IE自带的打印,楼主可以去看看符合你的要求不。
sswwyy 2013-02-22
- 打赏
- 举报
想名费脑 2013-02-22
- 打赏
- 举报
顶一下
以专业开发人员为伍 2013-02-21
- 打赏
- 举报
如果不知道asp.net是运行在服务器上的,这个asp.net程序员需要找能够把握你的基础的人给你辅导。
人傻且呆但不萌 2013-02-21
- 打赏
- 举报
程序在服务器上运行的,客户端那边- -,不多说了,说多了就是泪呀。
你们是不是在找BUG 2013-02-21
- 打赏
- 举报
你这个打印是在服务器弹出的打印预览,不是客户端,建议用报表来做,vs自带的rdlc报表
段传涛 2013-02-21
- 打赏
- 举报
和本地的office组件相关。
菜牛 2013-02-21
- 打赏
- 举报
你这完全是本机代码……还wordApp.Visible=true;服务器上当然打开了,客户端怎么看……
服务器调用COM组件不是不行,但是比较复杂,最基本的是不能有界面操作,那是服务,没有UI的。而且要维护COM组件的销毁,比如你就没有wordApp.Quit()。
用第三方的非COM组件吧,比如NPOI。
Ho_Johnson 2013-02-21
- 打赏
- 举报
接分来啦学习学习
零落飘摇 2013-02-21
- 打赏
- 举报
其实这代码我是参考网上的,一开始觉得没错就用了!刚才看了下,和DCOM配置里面的word权限有关,还有
ApplicationClass wordApp = new ApplicationClass();
好像要在后台用!
机器人 2013-02-21
- 打赏
- 举报
这是一个不好的方案
但可以用带宏的Word,利用宏来执行Word预览打印,当然客户端也要给足权限。
still_melody 2013-02-20
- 打赏
- 举报
server.mappath(~/模版2.doc);
yyl8781697 2013-02-20
- 打赏
- 举报
你的doc模板里面是什么呢 能不能换成用aspx或者其他页面来做模板 这样可能好实现一点
IssacChow 2013-02-20
- 打赏
- 举报
接
EnForGrass 2013-02-20
- 打赏
- 举报
调用office组件实现不了你要的效果
两种方法试试
1、把复制的word让其在客户端下载,以流的方式下载,可以实现,但是容易造成word进程阻塞,可以下载之前和下载完成后杀掉word进程。个人觉得这个也不大满足需求
2、换方式,用RDLC等报表来完成