高手救命,在ASP.NET中如何实现批量打印??

fengfeng_191 2007-03-09 02:07:52
我想要打印批量客户发票收据,数据是从数据库取得的,表中有10000以上的客户,要求一次性要为每个客户要打印一张的收据。如果先生成一个网页再用Javascrpt调用打印的话,客户不多时可以用,但要打印这么多收据时,网页显示很慢很慢。更别说打印了。希望高手指点一二,小弟感激不尽!!!
...全文
850 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
yangshibing 2007-06-04
  • 打赏
  • 举报
回复
请问楼主,那你的批量打印导入Excel是怎么实现的,能不能给些源代码,我的邮箱是215944907@qq.com,谢谢了,还有这个是怎么用function yourData(name,address)
{
this.name = name;
this.address = address;
}
var arr = new Array();
arr[0] = new yourData("a","b");
//....
for(var i = 0 ;i<arr.legnth;i++)
{
document.getElementById("NameID").innerHTML = arr[i].name;
//...
window.print();
}
alert("打印成功");
超级大笨狼 2007-04-06
  • 打赏
  • 举报
回复
批量的还是用winform打印Webbrowser里面的网页



<html>
<head>
<meta name=vs_targetSchema content="http://schemas.microsoft.com/intellisense/ie5">
<title>***上海市眼病防治中心病人结帐费用报表***</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<!--media=print 这个属性可以在打印时有效-->
<style media=print>
.Noprint{display:none;}
.PageNext{page-break-after: always;}
</style>
<style>
body,td,th
{
font-size: 12px;
}
.tdp
{
border-bottom: 1 solid #000000;
border-left: 1 solid #000000;
border-right: 0 solid #ffffff;
border-top: 0 solid #ffffff;
}
.tabp
{
border-color: #000000;

border-collapse:collapse;
}
.NOPRINT {
font-family: "宋体";
font-size: 12px;
}

</style>

</head>

<body >
<OBJECT id=WebBrowser classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 height=0 width=0 VIEWASTEXT>
</OBJECT>
<input type=button value=打印 onclick="document.all.WebBrowser.ExecWB(6,1)" class="NOPRINT">
<input type=button value=直接打印 onclick="document.all.WebBrowser.ExecWB(6,6)" class="NOPRINT">
<input type=button value=页面设置 onclick="document.all.WebBrowser.ExecWB(8,1)" class="NOPRINT">
<input type=button value=打印预览 onclick="document.all.WebBrowser.ExecWB(7,1)" class="NOPRINT">
<br/>
<table width="90%" border="0" align="center" cellpadding="0" cellspacing="0">
<tr align="center">
<td colspan="5"><font size="3">上海市眼病防治中心病人结帐费用报表(A) </font></td>
</tr>
<tr>
<td>汇总人次 5</td>
<td>费用合计 15853.12</td>
<td>统计日期 </td>
<td>制表人 023</td>
<td>制表日期:2004-05-13</td>
</tr>
</table>



<table width="90%" border="1" align="center" cellpadding="2" cellspacing="0" bordercolor="#000000" class="tabp">
<tr>
<td >姓名</td>
<td >住院号</td>
<td >科室</td>
<td >结帐日期</td>
<td >出院日期</td>
<td >费用合计</td>
<td >医保交易费用</td>
<td >分类给付费用</td>
<td >非医保交易费</td>
<td > </td>
<td > </td>
<td > </td>
<td > </td>
<td > </td>
<td > </td>

</tr>
<tr>
<td > </td>
<td > </td>
<td > </td>
<td > </td>
<td > </td>
<td > </td>
<td > </td>
<td > </td>
<td > </td>
<td > </td>
<td > </td>
<td > </td>
<td > </td>
<td > </td>

</tr>
</table>
<hr align="center" width="90%" size="1" noshade class="NOPRINT" >
<!--分页-->
<div class="PageNext"></div>
<table width="90%" border="1" align="center" cellpadding="2" cellspacing="0" bordercolor="#000000" class="tabp">
<tr>
<td >第2页</td>
</tr>
<tr>
<td >看到分页了吧</td>
</tr>
<tr>
<td > </td>
</tr>
<tr>
<td > </td>
</tr>
<tr>
<td ><table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="50%" >这样的报表
对一般的要求就够了。</td>
<td> </td>
</tr>
</table></td>
</tr>
</table>
</body>
</html>



fengfeng_191 2007-03-27
  • 打赏
  • 举报
回复
thinkner 2007-03-17
  • 打赏
  • 举报
回复
帮顶一下

也遇上同样的问题,我做的是批量套打。在本地还行,公网上运行起来速度很慢的。
还有更好的办法没?
gauzxj 2007-03-17
  • 打赏
  • 举报
回复
window.print()
最后一只恐龙 2007-03-17
  • 打赏
  • 举报
回复
如果不一次显示,则只有客户端的办法,xingdongfang(xingdongfang)是一个思路,但没有最终解决一次请求全部数据的问题。

lz可以借鉴ajax的方法,请求一个用户的数据,用xingdongfang(xingdongfang)的方法显示并打印,打印后再请求一个数据,显示并打印......直到需要打印的都打印完。
这样数据库中需要设置一个字段,标记是否已打印本期发票。
同时还应提供另外一个单独打印的功能,主要用于已打印的重新打印发票。
fengfeng_191 2007-03-17
  • 打赏
  • 举报
回复
帮顶,期待.....
fengfeng_191 2007-03-09
  • 打赏
  • 举报
回复
自已顶一下
fengfeng_191 2007-03-09
  • 打赏
  • 举报
回复
把数据导入word或excel再打印就不卡了吗?说详细点好吗?
在线等待
lubosun 2007-03-09
  • 打赏
  • 举报
回复
把数据导入word或excel就好了
只是个idea,没有试过
fengfeng_191 2007-03-09
  • 打赏
  • 举报
回复
谢谢各位,参于者都有分
Wizard_Joe 2007-03-09
  • 打赏
  • 举报
回复
帮顶,期待.
xingdongfang 2007-03-09
  • 打赏
  • 举报
回复
设置好打印纸张
然后用Javascript数组去打印
function yourData(name,address)
{
this.name = name;
this.address = address;
}
var arr = new Array();
arr[0] = new yourData("a","b");
//....
for(var i = 0 ;i<arr.legnth;i++)
{
document.getElementById("NameID").innerHTML = arr[i].name;
//...
window.print();
}
alert("打印成功");

xinfan 2007-03-09
  • 打赏
  • 举报
回复
你自己顶不了了吧 我帮你顶下
fengfeng_191 2007-03-09
  • 打赏
  • 举报
回复
在线等待.....

62,025

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧