ASP中怎样实现打印问题

dreamflyin 2003-10-17 01:30:12
请教一个ASP中打印问题:
在对数据库进行查询之后,所有数据形成列表方式在页面显示,如果把这些表格形式和内容打印到特定的纸张上,例如B5,用ASP该怎样实现?
如果要把这些表格形式和内容导出到EXCEL或者ACCESS中,用ASP怎样实现?
...全文
53 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
wjhcjg 2003-10-19
  • 打赏
  • 举报
回复
续上一个回复的第二个例子:
<%Response.Expires=0%>
<!-- #INCLUDE FILE="../y_pro/rep.inc" -->
<!-- #INCLUDE FILE="../y_pro/SelectBmOne.inc" -->
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<link rel="stylesheet" type="text/css" href="home.css">
<title>打印基建维修申报单</title>
<style><!--
A:link {text-decoration: none; color: #000000}
A:visited {text-decoration: none; color: 000000}
A:active {text-decoration: none}
A:hover {text-decoration: underline; color: #ff0000;font-size:12pt}
td { font-size: 10pt; text-decoration: none}
body { font-family: "宋体"; font-size: 10pt; text-decoration: none}
--></style>
<style>
.tl {border:solid windowtext .5pt;}
.tmr {border:solid windowtext .5pt; border-left:none;}
</style>
</head>
<SCRIPT LANGUAGE="JavaScript">
<!--
function printer() {
var temp=window.confirm('是否要打印工程技措汇总单?');
if (temp)
{
window.print();
//alert("已在打印中,可关闭窗口......")
//window.close();
}
else
{
window.close();
}
return temp;
}
//-->
</SCRIPT>
<body onload="printer();" topmargin="1" leftmargin="1" marginwidth="1" marginheight="1" bgcolor="#FFFFFF">

<p align="center">

<% set conn = db_Conn()
bm=trim(request("bm"))
nian=request("nian")
yue0=request("yue0")
if nian="" then nian=year(date())
if yue0="" then yue0=month(date())
if len(bm)=0 then
bm="00"
end if

if bm="00" or bm="" then
tempbm="所有部门"
else
set rss=conn.execute("select bmmc from bumen where bm='"&bm&"'")
tempbm=trim(rss("bmmc"))&"处"
rss.close
end if
%>
<%=nian%>年<%=yue0%>月<%=tempbm%>工程技措申报汇总
<table border="1" cellspacing="0" cellpadding="0" width="100%" bordercolorlight="#000000" style='border-collapse: collapse; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; border-style: none; border-width: medium' bordercolordark="#000000">
<tr height="25">
<td width="35%" height="20" align="center" bgcolor="#EEEEEE">项目名称</td>

<td width="20%" height="20" align="center" bgcolor="#EEEEEE">申请单位</td>

<td width="15%" height="20" align="center" bgcolor="#EEEEEE">申报日期</td>

<td width="15%" height="20" align="center" bgcolor="#EEEEEE">预估费用</td>

<td width="15%" height="20" align="center" bgcolor="#EEEEEE">项目负责人</td>
</tr>
<%
str_nian=""
str_yue0=""
if yue0="" then
str_yue0=""
else
str_yue0=" and month(tbrq)="&yue0&" "
end if
if nian="" then
str_nian=""
else
str_nian=" and year(tbrq)="&nian&" "
end if

if len("bm")=0 or bm="00" then
sql="select xmmc,bumen.bmmc,tbrq,ygfy,users.name from gc_jcxm,users,bumen "
sql=sql&" where users.signon=gc_jcxm.xmfzr and bumen.bm=gc_jcxm.sqdw and gc_jcxm.sign='1' "
else
sql="select xmmc,bumen.bmmc,tbrq,ygfy,users.name from gc_jcxm,users,bumen "
sql=sql&" where gc_jcxm.sqdw='"&bm&"' and users.signon=gc_jcxm.xmfzr and bumen.bm=gc_jcxm.sqdw and gc_jcxm.sign='1' "
end if
sql=sql&str_nian&str_yue0&" order by tbrq desc "

Select Case Request.QueryString("pages")
Case ""
Session("Cpage") = 1
Case "Next"
Session("Cpage") = Session("Cpage") + 1
Case "Prev"
Session("Cpage") = Session("Cpage") - 1
End Select
Set RS = Server.CreateObject("ADODB.Recordset")
RS.PageSize =15
'response.write sql
RS.Open sql,conn,1
if not RS.eof then
if Session("Cpage")>rs.pagecount then
Session("Cpage")=rs.pagecount
else if Session("Cpage")<1 then
Session("Cpage")=15
end if
end if
RS.AbsolutePage = CLng(Session("Cpage"))
end if
%>

<%
i=1
do while (not RS.eof) and i <= RS.PageSize
%>
<tr height="25">
<td width="35%" height="20" align="center"><%=rs("xmmc")%></td>

<td width="20%" height="20" align="center"><%=rs("bmmc")%></td>

<td width="15%" height="20" align="center"><%=rs("tbrq")%></td>

<td width="15%" height="20" align="center"><%=rs("ygfy")%></td>

<td width="15%" height="20" align="center"><%=rs("name")%></td>
</tr>
<%i=i+1
RS.movenext
loop
%>
</table>
<%
RS.Close
Set conn = Nothing
%>
</form>
</body>

</html>


你放到编辑器查看就一目了然了,是用IE来打印~!
wjhcjg 2003-10-19
  • 打赏
  • 举报
回复
我做OA的,经常遇到打印汇总问题,大家同行,我把我的经验做的也告诉你吧,不懂会不会土点:
用ASP实现把数据库查出的数据打出来,我用例子给你吧,用两页实现:(下一页代码下一个回复给你,太长不让发)
第一页:
<%Response.Expires=0%>
<!-- #INCLUDE FILE="../y_pro/rep.inc" -->
<!-- #INCLUDE FILE="../y_pro/SelectBmOne.inc" -->
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<link rel="stylesheet" type="text/css" href="home.css">
<title>用车申请</title>

</head>

<body leftmargin="0" topmargin="0" marginheight="0" marginwidth="0">
<form name="fm" action="hz_gcjc.asp" method="post" style="display:inline">
<%
bm=trim(request("bm"))
nian=request("nian")
yue0=request("yue0")
if nian="" then nian=year(date())
if yue0="" then yue0=month(date())
if len(bm)=0 then
bm="00"
end if

set conn = db_Conn()
%>

<table border="0" cellspacing="1" width="100%" hspace="0" bgcolor="#FFFFFF" class=text>
<tr >
<td bgcolor="#66AAEE" valign="middle" align="center" height="30" colspan="11" width="662">
<%set rss=conn.execute("select bm,bmmc from bumen order by zzjb")%>
<p align="left">
 
<select name="nian" onchange="submit()">
<%for k=2003 to int(year(date()))+1%>
<%if nian="" then
if int(year(date()))=k then%>
<option value="<%=k%>" selected><%=k%></option>
<%else%>
<option value="<%=k%>"><%=k%></option>
<%end if%>
<%else
if k=int(nian) then%>
<option value="<%=k%>" selected><%=k%></option>
<%else%>
<option value="<%=k%>"><%=k%></option>
<%end if%>
<%end if%>
<%next%>
</select><font color="#FFFFFF">年</font>
<select name="yue0" onchange="submit()" size="1">
<%for i=1 to 12%>
<%if int(yue0)=i then%>
<option value="<%=i%>" selected><%=i%>月
<%else%>
<option value="<%=i%>"><%=i%>月 <%
end if
next
%>
</select><font color="#FFFFFF">月</font>
<select name="bm" onchange="submit()">
<%
if len("bm")=0 or bm="00" then
response.write "<option value='00' selected>----全部----"
else
response.write "<option value='00'>----全部----"
end if
do while not RSS.eof
if trim(bm)=trim(RSS("bm")) then
response.write "<option value='"&trim(RSS("bm"))&"' selected>"&trim(RSS("bmmc"))
else
response.write "<option value='"&trim(RSS("bm"))&"'>"&trim(RSS("bmmc"))
end if
RSS.movenext
loop
rss.close
%>
</select>
<%
str_nian=""
str_yue0=""
if yue0="" then
str_yue0=""
else
str_yue0=" and month(tbrq)="&yue0&" "
end if
if nian="" then
str_nian=""
else
str_nian=" and year(tbrq)="&nian&" "
end if

if len("bm")=0 or bm="00" then
sql="select gc_jcxm.id,xmmc,bumen.bmmc,tbrq,ygfy,users.name from gc_jcxm,users,bumen "
sql=sql&" where users.signon=gc_jcxm.xmfzr and bumen.bm=gc_jcxm.sqdw and gc_jcxm.sign='1' "
else
sql="select gc_jcxm.id,xmmc,bumen.bmmc,tbrq,ygfy,users.name from gc_jcxm,users,bumen "
sql=sql&" where gc_jcxm.sqdw='"&bm&"' and users.signon=gc_jcxm.xmfzr and bumen.bm=gc_jcxm.sqdw and gc_jcxm.sign='1' "
end if
sql=sql&str_nian&str_yue0&" order by tbrq desc "

Select Case Request.QueryString("pages")
Case ""
Session("Cpage") = 1
Case "Next"
Session("Cpage") = Session("Cpage") + 1
Case "Prev"
Session("Cpage") = Session("Cpage") - 1
End Select
set rs=server.createobject("adodb.recordset")
RS.PageSize =15
'response.write sql
RS.Open sql,conn,1
if not RS.eof then
if Session("Cpage")>rs.pagecount then
Session("Cpage")=rs.pagecount
else if Session("Cpage")<1 then
Session("Cpage")=15
end if
end if
RS.AbsolutePage = CLng(Session("Cpage"))
end if
%>
<font color="#FFFFFF">处工程技措项目(按申报日期汇总)</font>
<a href='#' title='打印汇总单' onClick=window.open('dy_gcjc.asp?nian=<%=nian%>&yue0=<%=yue0%>&bm=<%=bm%>&page=<%=CLng(Session("Cpage"))%>','report','scrollbars=yes,resizable=no,left=50,top=0,width=680,height=480')>[打印页面]</a>
</p>
</td>
</tr>
<tr bgcolor="#eeeeFF">
<td width="35%" height="20" align="center">项目名称</td>

<td width="20%" align="center">申请单位</td>
<td width="15%" align="center">申报日期</td>
<td width="15%" align="center">预估费用</td>
<td width="15%" align="center">项目负责人</td>
</tr>

<%
i=1
do while (not RS.eof) and i <= RS.PageSize
%>
<tr bgcolor="#eeeeFF">
<td width="35%" height="20" align="center" bgcolor="#CCCCFF">
<a href='#' title=查看此工程技措项目详情 onClick=window.open('dy_gcjc_detail.asp?id=<%=rs("id")%>','report','scrollbars=yes,resizable=no,width=700,height=520')>
<%=rs("xmmc")%></a>
</td>
<td width="20%" align="center" bgcolor="#CCCCFF"><%=rs("bmmc")%></td>
<td width="15%" align="center" bgcolor="#CCCCFF"><%=rs("tbrq")%></td>
<td width="15%" align="center" bgcolor="#CCCCFF"><%=rs("ygfy")%></td>
<td width="15%" align="center" bgcolor="#CCCCFF"><%=rs("name")%></td>
</tr>
<% i=i+1
RS.movenext
loop
%>
<tr bgcolor="#eeeeFF">
<td height="18" align="center" colspan="11" width="100%"> <font color="#0066ff">当前是第
<%=Session("Cpage")%> 页(共 <%=RS.PageCount%> 页, <%=RS.RecordCount%>
条)    </font>
<%If CLng(Session("Cpage")) > 1 Then %>
<a href="hz_gcjc.asp?pages=Prev"><< 前页</a>    
<%end if
If CLng(Session("Cpage")) < rs.PageCount Then %>
<a href="hz_gcjc.asp?pages=Next"> 下页 >></a>
<%End If%>
<a href=javascript:location.reload()>刷新</a>
</td>

</tr>
</table>
<%
RS.Close
Set conn = Nothing
%>
</form>
</body>

</html>


zhlym 2003-10-19
  • 打赏
  • 举报
回复
以上之前我早就试过了,就连动态分页都解决不了!
dreamflyin 2003-10-19
  • 打赏
  • 举报
回复
首先对以上各位表示感谢,心里也有一番感慨:还是CSDN高手多啊!
我现在还没有去试验,所以还没给各位加分。

先说一下问题来源吧,想做一个销售管理系统,考虑到打印的问题开始想用VB编一个,后来发现自己的VB几乎都丢了,就想用ASP做一个内部网的。由于销售清单的纸张多样性,以及数据查询出来都在浏览器页面显示,不符合一些规定,所有打印的问题就出来了。
我最初的想法是能不能把我查询出来的这些数据(已经形成了列表)和列表格式(就是一些字段)导出到想EXCEL或者ACCESS这样的数据程序里面,这样就可以通过调用这些程序来打印了。

不知道各位还有更好的意见没有,希望各位能多多提供资料,在此感谢!
tana 2003-10-17
  • 打赏
  • 举报
回复
以上两种方案,我收集的,我没有试过,你看看吧
tana 2003-10-17
  • 打赏
  • 举报
回复
web打印的大全:

1、控制"纵打"、 横打”和“页面的边距。
(1)<script defer>
function SetPrintSettings() {
// -- advanced features
factory.printing.SetMarginMeasure(2) // measure margins in inches
factory.SetPageRange(false, 1, 3) // need pages from 1 to 3
factory.printing.printer = "HP DeskJet 870C"
factory.printing.copies = 2
factory.printing.collate = true
factory.printing.paperSize = "A4"
factory.printing.paperSource = "Manual feed"

// -- basic features
factory.printing.header = "This is MeadCo"
factory.printing.footer = "Advanced Printing by ScriptX"
factory.printing.portrait = false
factory.printing.leftMargin = 1.0
factory.printing.topMargin = 1.0
factory.printing.rightMargin = 1.0
factory.printing.bottomMargin = 1.0
}
</script>

(2)
<script language="javascript">
function printsetup(){
// 打印页面设置
wb.execwb(8,1);
}
function printpreview(){
// 打印页面预览

wb.execwb(7,1);


}

function printit()
{
if (confirm('确定打印吗?')) {
wb.execwb(6,6)
}
}
</script>
</head>
<body>
<OBJECT classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"

height=0 id=wb name=wb width=0></OBJECT>
<input type=button name=button_print value="打印"

onclick="javascript:printit()">
<input type=button name=button_setup value="打印页面设置"

onclick="javascript:printsetup();">
<input type=button name=button_show value="打印预览"

onclick="javascript:printpreview();">
<input type=button name=button_fh value="关闭"

onclick="javascript:window.close();">

------------------------------------------------
关于这个组件还有其他的用法,列举如下:
WebBrowser.ExecWB(1,1) 打开
Web.ExecWB(2,1) 关闭现在所有的IE窗口,并打开一个新窗口
Web.ExecWB(4,1) 保存网页
Web.ExecWB(6,1) 打印
Web.ExecWB(7,1) 打印预览
Web.ExecWB(8,1) 打印页面设置
Web.ExecWB(10,1) 查看页面属性
Web.ExecWB(15,1) 好像是撤销,有待确认
Web.ExecWB(17,1) 全选
Web.ExecWB(22,1) 刷新
Web.ExecWB(45,1) 关闭窗体无提示

2、分页打印
<HTML>
<HEAD>
<STYLE>
P {page-break-after: always}
</STYLE>
</HEAD>
<BODY>
<%while not rs.eof%>
<P><%=rs(0)%></P>
<%rs.movenext%>
<%wend%>
</BODY>
</HTML>

3、ASP页面打印时如何去掉页面底部的路径和顶端的页码编号
(1)ie的文件-〉页面设置-〉讲里面的页眉和页脚里面的东西都去掉,打印就不出来了。
(2)<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="YC">
<script language="VBScript">
dim hkey_root,hkey_path,hkey_key
hkey_root="HKEY_CURRENT_USER"
hkey_path="\Software\Microsoft\Internet Explorer\PageSetup"
'//设置网页打印的页眉页脚为空
function pagesetup_null()
on error resume next
Set RegWsh = CreateObject("WScript.Shell")
hkey_key="\header"
RegWsh.RegWrite hkey_root+hkey_path+hkey_key,""
hkey_key="\footer"
RegWsh.RegWrite hkey_root+hkey_path+hkey_key,""
end function
'//设置网页打印的页眉页脚为默认值
function pagesetup_default()
on error resume next
Set RegWsh = CreateObject("WScript.Shell")
hkey_key="\header"
RegWsh.RegWrite hkey_root+hkey_path+hkey_key,"&w&b页码,&p/&P"
hkey_key="\footer"
RegWsh.RegWrite hkey_root+hkey_path+hkey_key,"&u&b&d"
end function
</script>
</HEAD>

<BODY>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/><p align=center>
<input type="button" value="清空页码" onclick=pagesetup_null()> <input type="button" value="恢复页吗" onclick=pagesetup_default()><br/>

</p>
</BODY>
</HTML>
4、浮动帧打印
<SCRIPT LANGUAGE=javascript>
function button1_onclick() {
var odoc=window.iframe1.document;
var r=odoc.body.createTextRange();
var stxt=r.htmlText;
alert(stxt)
var pwin=window.open("","print");
pwin.document.write(stxt);
pwin.print();
}
</SCRIPT>
4、用FileSystem组件实现WEB应用中的本地特定打印
<script Language=VBScript>
function print_onclick //打印函数
dim label
label=document.printinfo.label.value //获得HTML页面的数据
set objfs=CreateObject("Scripting.FileSystemObject") //创建FileSystem组件对象的实例
set objprinter=objfs.CreateTextFile ("LPT1:",true) //建立与打印机的连接
objprinter.Writeline("__________________________________") //输出打印的内容
objprinter.Writeline("| |")
objprinter.Writeline("| 您打印的数据是:"&label& " |”)
objprinter.Writeline("| |")
objprinter.Writeline("|_________________________________|")
objprinter.close //断开与打印机的连接
set objprinter=nothing
set objfs=nothing // 关闭FileSystem组件对象
end function
</script>
服务器端脚本:
<%………
set conn=server.CreateObject ("adodb.connection")
conn.Open "DSN=name;UID=XXXX;PWD=XXXX;"
set rs=server.CreateObject("adodb.recordset")
rs.Open(“select ……”),conn,1,1
……….%> //与数据库进行交互
HTML页面编码:
<HTML>
………
<FORM ID=printinfo NAME="printinfo" >
<INPUT type="button" value="打印>>" id=print name=print > //调用打印函数
<INPUT type=hidden id=text1 name=label value=<%=………%>> //保存服务器端传来的数据
………
</HTML>
tana 2003-10-17
  • 打赏
  • 举报
回复
<object id="factory" style="display:none" viewastext classid="clsid:1663ed61-23eb-11d2-b92f-008048fdd814"
codebase="http://www.meadroid.com/scriptx/ScriptX.cab#Version=5,60,0,360"></object>

<input type=button value=页面设置 onclick="factory.printing.PageSetup()">
<input type=button value=打印预览 onclick="factory.printing.Preview()">

<script language=javascript>
function window.onload()
{
factory.printing.header = "居左显示&b居中显示&b居右显示页码,第&p页/共&P页"
factory.printing.footer = "(自定义页脚)"
factory.printing.leftMargin = 0.75
factory.printing.topMargin = 1.5
factory.printing.rightMargin = 0.75
factory.printing.bottomMargin = 1.5
}
</script>
<input type=button value="打印本页" onclick="factory.printing.Print(false)">
<input type=button value="页面设置" onclick="factory.printing.PageSetup()">
<input type=button value="打印预览" onclick="factory.printing.Preview()"><br>
<a href="http://www.meadroid.com/scriptx/docs/printdoc.htm?static" target=_blank>具体使用手册,更多信息,点这里</a>

关于画图一事有两个控件可用:mschart 和 Office OWC
nevana 2003-10-17
  • 打赏
  • 举报
回复
用javascript也可以啊!
qdubit 2003-10-17
  • 打赏
  • 举报
回复
第一个问题估计麻烦一些,可能需要借助特定的组件
第二个问题好处理呀,使用FSO对象就可以实现的。
yangsm 2003-10-17
  • 打赏
  • 举报
回复
up!顶一下!

28,390

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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