请教Asp打印的问题

balloy 2002-05-24 12:19:22
请问,html页面中如何实现内容的打印,以及打印预览?

我的是Ie5.0,似乎不能用<Object CLASSID="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2">的ExecWB命令来实现打印预览。

这样是不是只有用别人的组件?谢谢大家!
...全文
186 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
balloy 2002-06-03
  • 打赏
  • 举报
回复
to xxjmz_78(阿甘) :
你的这段代码是用于在服务器端打印的把。
我需要的是在客户端使用华表或者Crystal reports打印的简单例子。谢谢。
balloy 2002-06-03
  • 打赏
  • 举报
回复
算了,散分把。
可能高手都很看不惯我这种不想自己动手的态度。
xxjmz_78 2002-06-02
  • 打赏
  • 举报
回复
ASP中实现网络打印功能◇◇
作者: 小牧
<%@ Language=VBScript %>
<%
Option Explicit

Dim strSubmit 'Form中用来保存提交按钮的值
Dim strPrinterPath 'Form中保存网络打印机路径的值
Dim strUsername 'Form中用户名的值
Dim strPassword 'Form中密码的值
Dim strMessage 'Form打印内容的值
Dim objFS 'VBScript中的文件系统对象
Dim objWSHNet 'WSH中的网络对象
Dim objPrinter '打印对象

strSubmit = Request.Form("Submit")
%>

<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
</HEAD>
<BODY>

<%
If strSubmit = "" Then
%>

注意的是:
由于这是演示,其中有关NT的帐号和密码都是使用了不加密的手段在ASP中传递的
真正的运用中应该对该登录过程进行安全处理。
<FORM action="ASPPrint.asp" method=POST id=form name=form>
<TABLE WIDTH=100% ALIGN=center BORDER=0 CELLSPACING=1 CELLPADDING=1>
<TR>
<TD ALIGN=right NOWRAP>网络打印机路径:</TD>
<TD ALIGN=left NOWRAP><INPUT type="text" id=printerpath name=printerpath
value="\\< Domain >\< Printer >"></TD>
</TR>
<TR>
<TD ALIGN=right NOWRAP>登录帐号:</TD>
<TD ALIGN=left NOWRAP><INPUT type="text" id=username name=username
value="<% = strUsername %>"></TD>
</TR>
<TR>
<TD ALIGN=right NOWRAP>登录口令:</TD>
<TD ALIGN=left NOWRAP><INPUT type="password" id=password
name=password></TD>
</TR>
<TR>
<TD ALIGN=right NOWRAP>请输入你想打印的文字:</TD>
<TD ALIGN=left NOWRAP><TEXTAREA rows=2 cols=20 id=message
name=message></TEXTAREA></TD>
</TR>
<TR>
<TD ALIGN=right NOWRAP> </TD>
<TD ALIGN=left NOWRAP><INPUT type="submit" value="Submit"
id=submit name=submit></TD>
</TR>
</TABLE>
</FORM>

当以上信息被提交后,就可以按照下面的代码进行打印了。
<%
Else
' 从form中取得响应信息。
strPrinterPath = Request.Form("printerpath")
strUsername = Request.Form("username")
strPassword = Request.Form("password")
strMessage = Request.Form("message")

We will now use the VBScript FileSystemObject object and the WSH Network object. The Network object will
give us the methods we need to open a printer connection, and the FileSystemObject will allow us to stream our
output to the printer. We create these objects in the following code example:

Set objFS = CreateObject("Scripting.FileSystemObject")
Set objWSHNet = CreateObject("WScript.Network")
' 使用WSH连接网络打印机
objWSHNet.AddPrinterConnection "LPT1", strPrinterPath, False, strUsername, strPassword
' 使用文件系统对象将打印设备作为一个文件使用
Set objPrinter = objFS.CreateTextFile("LPT1:", True)
' 给打印设备送出文本
objPrinter.Write(strMessage)
'关闭打印设备对象并进行错误陷阱处理
On Error Resume Next
objPrinter.Close
' 如果发生错误,关闭打印连接,并输出错误信息
If Err Then
Response.Write ("Error # " & CStr(Err.Number) & " " & Err.Description)
Err.Clear
Else
' 操作成功,输出确认信息
Response.Write("<CENTER>")
Response.Write("<TABLE WIDTH=100% ALIGN=center BORDER=0 CELLSPACING=1 CELLPADDING=1>")
Response.Write("<TR><TD ALIGN=RIGHT><B>打印消息送出:</B></TD>")
Response.Write("<TD ALIGN=LEFT>" & strMessage & "</TD></TR>")
Response.Write("<TR><TD ALIGN=RIGHT><B>网络打印机路径:</B></TD>")
Response.Write("<TD ALIGN=LEFT>" & strPrinterPath & "</TD></TR>")
Response.Write("<TR><TD ALIGN=RIGHT><B>登录帐号:</B></TD>")
Response.Write("<TD ALIGN=LEFT>" & strUsername & "</TD></TR>")
Response.Write("</TABLE>")
Response.Write("</CENTER>")
End If
' 取消打印连接
objWSHNet.RemovePrinterConnection "LPT1:"
Set objWSHNet = Nothing
Set objFS = Nothing
Set objPrinter = Nothing
End If
%>
</BODY>
</HTML>



zhenhao 2002-05-29
  • 打赏
  • 举报
回复
学习:)
balloy 2002-05-29
  • 打赏
  • 举报
回复
to wwttyy(嘻嘻):
很感谢你提供的方法,其实我现在已经用Word实现了相似的功能,不过我希望能和其它方法比较一下,看看烦易程度,以及效果。毕竟你的这种方法还是要求客户端要安装Excel。
另外,我的Ie5.0似乎没有打印预览。
ssm1226 2002-05-28
  • 打赏
  • 举报
回复
http://www.csdn.net/develop/Read_Article.asp?Id=12709


水墨画 2002-05-28
  • 打赏
  • 举报
回复
找到了,我这个页面导了两个库表到excel中,
<%@ LANGUAGE="VBSCRIPT" %>

<!--#include file="include/config.asp"-->
<%
'EXAMPLE AS:把数据库中一个每天24小时在线人数放到一个EXCEL文件中去
'AUTHOR :钢铁工人
'EMAIL :hello_hhb@21cn.com
'DATE :2001-3-25
'TEST :在NT4,SP6,SQL SERVER 7.0,EXCEL2000中测试通过
%>
<HTML>
<HEAD>
<meta content="text/html; charset=gb2312" http-equiv="Content-Type">
<TITLE>生成EXCEL文件</TITLE>
</HEAD>
<body>
<a href="excel.asp?act=make">生成在线人口的EXCEL</a>
<hr size=1 align=left width=300px>
<%
if Request("act") <> "" then
'dim conn
'set conn=server.CreateObject("adodb.connection")
'conn.Open "test","sa",""
'conn.Open Application("connstr")
dim rs,sql,filename,fs,myfile,x,link
Set fs = server.CreateObject("scripting.filesystemobject")
'--假设你想让生成的EXCEL文件做如下的存放
filename = "c:\online.xls"
'--如果原来的EXCEL文件存在的话删除它
if fs.FileExists(filename) then
fs.DeleteFile(filename)
end if
'--创建EXCEL文件
set myfile = fs.CreateTextFile(filename,true)
Set rs = Server.CreateObject("ADODB.Recordset")
'--从数据库中把你想放到EXCEL中的数据查出来
sql = "select username,name,sex from t_user order by id asc"
rs.Open sql,cn,3,1
if not rs.EOF then
dim strLine,responsestr
strLine=""
For each x in rs.fields
strLine= strLine & x.name & chr(9)
Next
'--将表的列名先写入EXCEL
myfile.writeline strLine
Do while Not rs.EOF
strLine=""
for each x in rs.Fields
strLine= strLine & x.value & chr(9)
next
'--将表的数据写入EXCEL
myfile.writeline strLine
rs.MoveNext
loop
end if
rs.Close

'--从数据库中把你想放到EXCEL中的数据查出来
sql1 = "select username1,name1,sex1 from t_usera order by id asc"
rs.Open sql1,cn,3,1
if not rs.EOF then
dim strLine1,responsestr1
strLine1=""
For each x in rs.fields
strLine1= strLine1 & x.name & chr(9)
Next
'--将表的列名先写入EXCEL
myfile.writeline strLine1
Do while Not rs.EOF
strLine1=""
for each x in rs.Fields
strLine1= strLine1 & x.value & chr(9)
next
'--将表的数据写入EXCEL
myfile.writeline strLine1
rs.MoveNext
loop
end if
rs.Close

set rs = nothing
cn.close
set cn = nothing
set myfile = nothing
Set fs=Nothing
link="<A HREF=" & filename & ">Open The Excel File</a>"
Response.write link
end if
%>
</BODY>
</HTML>
水墨画 2002-05-28
  • 打赏
  • 举报
回复
直接在ie上打印,或者把数据导入excel中再进行打印,

前者比较简单,我的ie上就有打印预览,你一页打印不下,它自动就换页了。
后者不难,而且导入excel中后,想怎么打印都可以。不过那段代码现在不在手边,下次上网我再发给你看。

我刚做了一个报表打印,我的当前页面有四个表格,我试了,把它导入excel中也可以,不过我没用这种方法,我用的是前者,不过恰恰相反,我的用户要求显示在一页上,我费了好大劲才把它显示在一页上。
balloy 2002-05-25
  • 打赏
  • 举报
回复
有没有人用过用友的华表?能不能说说怎样用?
BrightEye 2002-05-25
  • 打赏
  • 举报
回复
上面的代码,可以打印单据\发票之类的东西吗?
xxjmz_78 2002-05-25
  • 打赏
  • 举报
回复
使用XML+VBS技术在ASP中实现报表的打印
2001-10-12 动网先锋

一、前言
ASP在电子商务上应用广泛,报表的处理又有一些麻烦。本文介绍了在ASP中利用
本人写的Report Server Page脚本解释器实现报表的显示、打印。
二、准备工作
(1)安装Visual Reprort Design软件
Visual Report Design是本人写的一个免费的报表设计器,程序的发行只需要
安装一个控件即可。
想要的网友可以到http://go.163.com/reportpro/ 下载
(2)设计报表
通过Visual Report Design 的可视化界面可以生成报表的脚本:mxb.rsp。
三、实现报表的打印、显示
下面是调用的文档:
printmx.asp
<%Option Explicit%>
<%
dim ReportName,ret
dim ReportAtl
dim name
set ReportAtl=Session("ReportAtl")
ReportName=Server.MapPath("mxb.rsp")
ret=reportatl.XMLToVBS(ReportName)
if ret=-1 then
response.write reportatl.ErrorMsg
response.end
end if

ReportName=Server.MapPath("mxb.vbs")
ret=reportatl.DoScript(ReportName)
if ret=-1 then
response.write reportatl.ErrorMsg
set ReportAtl=nothing
response.end
end if
set ReportAtl=nothing
%>
<html>
<OBJECT id=reportatl classid="clsid:D3F064E5-F4C0-4C52-9E7F-263D96B7EA11" codebase="Report.cab#version=1,0,0,1">
</OBJECT>
<script language=vbscript>
dim ret
ret=reportatl.DoPrintReport("mxb.zcg")
if ret=-1 then
msgbox reportatl.ErrorMsg
end if
</script>
</html>
用Visual Report Design 产生的报表脚本mxb.rsp:
<?xml version='1.0' encoding='GB2312' ?>
<!DOCTYPE report SYSTEM 'print_report.dtd' >
<report name='报表'>
<report_script>
dim rs,con,sql,lsh
dim temp
set con =CreateObject("ADODB.Connection")
con.ConnectionString = "DBQ=c:\report\demo\asp\report.mdb;DRIVER={Microsoft Access Driver (*.mdb)};"
con.open
Set rs =CreateObject("ADODB.Recordset")
sql="SELECT * FROM cj,student where cj.id=student.id "
rs.open sql,con,1,3
</report_script>
<report_head height='12'>
<text name='vfptext' top='4' left='76' width='26' height='5' font_name='宋体' font_size='14' font_weight='700' font_italic='0' font_underline='0' >
成绩明细表
</text>
</report_head>
<page_head height='6'>
<line name='vfpline' top='0' left='9' width='178' height='0' weight='131072'>
</line>
<line name='vfpline' top='6' left='9' width='178' height='0' weight='131072'>
</line>
<text name='vfptext' top='2' left='18' width='6' height='3' font_name='宋体' font_size='9' font_weight='700' font_italic='0' font_underline='0' >
姓名
</text>
<text name='vfptext' top='2' left='46' width='6' height='3' font_name='宋体' font_size='9' font_weight='700' font_italic='0' font_underline='0' >
语文
</text>
<text name='vfptext' top='2' left='72' width='6' height='3' font_name='宋体' font_size='9' font_weight='700' font_italic='0' font_underline='0' >
数学
</text>
<text name='vfptext' top='2' left='99' width='6' height='3' font_name='宋体' font_size='9' font_weight='700' font_italic='0' font_underline='0' >
英语
</text>
<text name='vfptext' top='2' left='162' width='6' height='3' font_name='宋体' font_size='9' font_weight='700' font_italic='0' font_underline='0' >
合计
</text>
<text name='vfptext' top='2' left='130' width='6' height='3' font_name='宋体' font_size='9' font_weight='700' font_italic='0' font_underline='0' >
平均
</text>
</page_head>
<page_body height='8'>
<text name='vfptext' top='2' left='15' width='25' height='4' font_name='宋体' font_size='9' font_weight='100' font_italic='0' font_underline='0'>
<report_script>
Report.Write cstr(rs("xm"))
</report_script>
</text>
<text name='vfptext' top='2' left='45' width='18' height='4' font_name='宋体' font_size='9' font_weight='100' font_italic='0' font_underline='0' >
<report_script>
Report.Write cstr(rs("yw"))
</report_script>
</text>
<text name='vfptext' top='2' left='71' width='18' height='4' font_name='宋体' font_size='9' font_weight='100' font_italic='0' font_underline='0' >
<report_script>
Report.Write cstr(rs("sx"))
</report_script>
</text>
<text name='vfptext' top='2' left='98' width='18' height='4' font_name='宋体' font_size='9' font_weight='100' font_italic='0' font_underline='0' >
<report_script>
Report.Write cstr(rs("yy"))
</report_script>
</text>
<text name='vfptext' top='2' left='130' width='18' height='4' font_name='宋体' font_size='9' font_weight='100' font_italic='0' font_underline='0' >
<report_script>
Report.Write cstr((rs("yw")+rs("sx")+rs("yy"))/3)
</report_script>
</text>
<text name='vfptext' top='2' left='162' width='18' height='4' font_name='宋体' font_size='9' font_weight='100' font_italic='0' font_underline='0' >
<report_script>
Report.Write cstr(rs("yw")+rs("sx")+rs("yy"))
</report_script></text>
</page_body>
<page_foot height='7'>
<text name='vfptext' top='2' left='12' width='13' height='3' font_name='宋体' font_size='9' font_weight='100' font_italic='0' font_underline='0' >
<report_script>
report.write "打印日期:"+formatdatetime(date(),1)
</report_script>
</text>
<text name='vfptext' top='2' left='137' width='50' height='3' font_name='宋体' font_size='9' font_weight='100' font_italic='0' font_underline='0' >
共%Pages%页,第%Page%页
</text>
<line name='vfpline' top='0' left='8' width='178' height='0' weight='131072'>
</line>
</page_foot>
<report_script>
do while not rs.eof
page_body()
rs.movenext
loop
rs.close
set rs=nothing
con.close
set con=nothing
</report_script>
</report>
四、其它信息
这是本人第一个开发工具,做得不好请指教
详细情况可以看:http://go.163.com/reportpro/
关于在ASP下使用的详细例子可以看c:\demo\asp/目录

funboy88 2002-05-25
  • 打赏
  • 举报
回复

我们都知道,现在的B/S应用越来越多,我们做程序的时候经常会遇到需要打印报表的情况,但是
我们知道我们很难对IE的客户端的打印机进行控制,我们除了对Window.print 的控制以外。没有
其他的任何的办法,而有的时候我们又必须是先预览,然后打印,有的时候我们也必须页面设置后
进行打印,怎么办?

有的朋友可能已经发现,在IE的 File 菜单下,这些都是有的,但是怎么通过脚本程序来调用这些菜单呢?
经过CafeCat的Sample的提示,终于发现使用一个ActiveX控件是可以实现这个功能的,请看下面的Code
< OBJECT classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 height=0 id=WB width=0 >< /OBJECT >
这个Object 其实就是 IEWebBrowser 设定 Width 和 Height 以后,我们在界面上就看不到控件的形状了

然后,我们就可以使用 这个object 实现我们选纸和预览的功能了
< script language="JavaScript" >
function doPrintSetup(){
//打印设置
WB.ExecWB(8,1)
}
function doPrintPreview(){
//打印预览
WB.ExecWB(7,1)
}

< /script >

当然,这样并不能完全解决客户端的打印问题,豆腐将在以后的文章中就这个问题进行进一步的探讨
balloy 2002-05-25
  • 打赏
  • 举报
回复
或者,有没有人用过Crystal Report?或者告诉我哪儿有简单例子也行,我想知道一下使用的复杂度,及其效果
ChinaOk 2002-05-24
  • 打赏
  • 举报
回复
web系统目前的一个大的缺陷就是打印功能太弱了。
如果不是利用外部的帮助,很难实现好的效果。
有一个袁飞的打印控件不知道怎么样/你可以看看。
balloy 2002-05-24
  • 打赏
  • 举报
回复
to net_lover(孟子E章) :
多谢,不过这个好像不行啊,它说要Ie5.5以上版本才能打印预览
孟子E章 2002-05-24
  • 打赏
  • 举报
回复
http://lucky.myrice.com/print.htm

balloy 2002-05-24
  • 打赏
  • 举报
回复
to freezwy(网络自由人):
袁飞的控件效果还可以,但它要求我调用它的函数自己作图,我要打印的主要是报表,就是在html中用<table>来实现的,如果要重新画表格的话,实在很麻烦,有什么简单的方法吗?另外,如何分页打印?多谢指点。
balloy 2002-05-24
  • 打赏
  • 举报
回复
好,谢谢大家,我先试试
freezwy 2002-05-24
  • 打赏
  • 举报
回复
http://www.yueliangwan.com.cn/yf/main/firstpage.asp
快去下载吧。

28,390

社区成员

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

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