问题高分征解(300分)!

TopHead 2000-06-06 04:53:00
请问在ASP程序中(不通过下载到客户端的组件)能否实现下述功能:
1、打印功能:需要打印的报表是多页的,需要在每页打印报表的表头,还有表格的宽度可能超过打印机纸张的宽度,这样的话就需要折行打印,如果直接调用菜单中的打印不能实现这些功能,请问是否在ASP程序中直接控制打印机,如果需要,如何实现,如果不需要,那怎样才能实现呢?
2、文件保存功能:需要在程序中将某些内容存到客户端的计算机上,能否实现,如何实现。

上述功能不要在需要更改用户端的安全级别等其他内容的基础上能实现吗?
...全文
780 31 打赏 收藏 转发到动态 举报
写回复
用AI写文章
31 条回复
切换为时间正序
请发表友善的回复…
发表回复
cjlong 2000-07-10
  • 打赏
  • 举报
回复
可使用asp 打印控件
VictorYu 2000-07-08
  • 打赏
  • 举报
回复
我给你一个例程,是在客户端打开WORD的,可以试试
Function BuildPlanDoc
Dim bResult
Dim myRange
Dim objData, szTemp

nTableIndex = 1
'Create Word Application object
Set objWordApp = CreateObject("Word.Application")

if objWordApp <> "Microsoft Word" then
alert ("Microsoft Word can not be launched !")
bResult = false
else
objWordApp.Documents.Add
objWordApp.WindowState = wdWindowStateNormal
objWordApp.ActiveWindow = "应用技巧库"
objWordApp.visible = true
bResult = true
end if

Set objData = document.all ("GetInfo").recordset

if objData.RecordCount <> 0 then
objData.MoveFirst
do while not objData.EOF

objWordApp.ActiveDocument.PageSetup.LeftMargin = 20
objWordApp.ActiveDocument.PageSetup.RightMargin = 20

Set myRange = objWordApp.ActiveDocument.Paragraphs.Add.Range
myRange.InsertBefore "应用技巧库 填表人:" & objData("Name") & " 日期:"& objData("date")
myRange.Font.Bold = True
myRange.Font.Size = 14


Set myRange = objWordApp.ActiveDocument.Paragraphs.Add.Range
objWordApp.ActiveDocument.Tables.Add myRange, 1, 1
myRange.Font.Size = 10

Set objTable = objWordApp.ActiveDocument.Tables(nTableIndex)
nTableIndex = nTableIndex + 1
objTable.Borders.Enable = TRUE
objTable.Rows(1).Range.Font.Bold = True
objTable.Rows(1).Range.Font.Size = 10
objTable.Rows(1).Cells.Merge
objTable.Cell(1, 1).Range.InsertAfter "产品库内容/产品小类:" & "NULL" & " 涉及产品名称:" & "NULL" & " 涉及厂商:"& "NULL"


Set myRange = objWordApp.ActiveDocument.Paragraphs.Add.Range
myRange.InsertBefore "技巧库归类"
myRange.Font.Bold = True
myRange.Font.Size = 14


Set myRange = objWordApp.ActiveDocument.Paragraphs.Add.Range
objWordApp.ActiveDocument.Tables.Add myRange, 1, 1
myRange.Font.Size = 10
Set objTable = objWordApp.ActiveDocument.Tables(nTableIndex)
nTableIndex = nTableIndex + 1
objTable.Borders.Enable = false
dim nRows
nRows = 1
' for i = 65 to 70
objTable.Rows(nRows).Range.Font.Bold = True
objTable.Rows(nRows).Cells.Merge
objTable.Cell(nRows, 1).Range.InsertAfter chr(65) & ": 大类:" & objData("c1") & ";二级类:" & objData("c2") & ";三级类:"& objData("c3")
nRows = nRows + 1
' next

Set myRange = objWordApp.ActiveDocument.Paragraphs.Add.Range
myRange.Font.Bold = True
myRange.Font.Size = 3

Set myRange = objWordApp.ActiveDocument.Paragraphs.Add.Range
objWordApp.ActiveDocument.Tables.Add myRange, 1, 1
myRange.Font.Size = 10

Set objTable = objWordApp.ActiveDocument.Tables(nTableIndex)
nTableIndex = nTableIndex + 1
objTable.Borders.Enable = TRUE
objTable.Rows(1).Range.Font.Bold = True
objTable.Rows(1).Range.Font.Size = 10
objTable.Rows(1).Cells.Merge
objTable.Cell(1, 1).Range.InsertAfter "备注与疑问: "

Set myRange = objWordApp.ActiveDocument.Paragraphs.Add.Range
myRange.Font.Bold = True
myRange.Font.Size = 3

Set myRange = objWordApp.ActiveDocument.Paragraphs.Add.Range
objWordApp.ActiveDocument.Tables.Add myRange, 3, 1
myRange.Font.Size = 10

Set objTable = objWordApp.ActiveDocument.Tables(nTableIndex)
nTableIndex = nTableIndex + 1
objTable.Borders.Enable = TRUE
objTable.Rows(1).Range.Font.Bold = True
objTable.Rows(1).Range.Font.Size = 10
objTable.Rows(1).Cells.Merge
objTable.Cell(1, 1).Range.InsertAfter "题目: " & objData("title")
objTable.Cell(2, 1).Range.InsertAfter "正文: "

szTemp = GetSource(objData("source"))

objTable.Cell(3, 1).Range.InsertAfter szTemp
objTable.Rows(3).Height = 300
objData.MoveNext
loop

end if
objWordApp.Activate
End Function
linyu 2000-07-07
  • 打赏
  • 举报
回复
[解释]
1,不可能用ASP控制打印机,如果可以的话,就可以控制所有的硬件了,那不天下大乱。
2,使用组件,有点难度,不通用。
3,使用服务器端OFFICE对象
我在一个系统里,使用WORD2000对象在服务器创建一个对象,可以用ASP控制生成的内容,然后在IE里打开。
[例子]
Set objWdDoc = Server.CreateObject("Word.Application")
If Err.number > 0 Then
response.write "没有安装WORD 2000,没法保存为Word文件,请正确安装Word2000!"
response.end
end if
objWdDoc.Documents.new.....

TopHead 2000-06-09
  • 打赏
  • 举报
回复
哪有这种书籍资料啊?
华南虎哥 2000-06-09
  • 打赏
  • 举报
回复
也许参考一下关于CSS结构一类的书籍中有关打印设置这一块的内容对你的帮助会大一点, 试试找一下.
zyc 2000-06-09
  • 打赏
  • 举报
回复
如果你会Delphi的话,可以用Delphi的ActiveX Form来嵌到网页中。不过,ActiveX Form是以一个表单的形式出现在用户浏览器中的,也就是说,打印的过程要用户单击一个按钮来实现。如果不能让用户来控制,则能用这种方法。如果能用的话就象是在本机控制打印机一个样,没什难的。Delphi的ActiveX Form产生的ocx不用注册,好用极了。
顺便说一句,我也想知道在ASP中(3.0以下版本)有没有直接控制风格打印机的输出内容的办法。我只知道用ASP的ADSI可以控制网络打印机的任务。
usage 2000-06-09
  • 打赏
  • 举报
回复
可在在服务器端注册的打印控件,输出的是要打印的内容(多页的),试试吧!
TopHead 2000-06-09
  • 打赏
  • 举报
回复
hblinux,谢谢你,你放心好了,你的得分不低的:)
华南虎哥 2000-06-09
  • 打赏
  • 举报
回复
CSS有关链接有:
1)、http://www4.nease.net/~hxh2000/css.htm
2)、http://best.163.com/~taoboy/host/
3)、http://firstnet.163.net/
4)、http://netbugs.cqi.com.cn/~chenhao/css/css.htm(推荐)
这么努力我的专家分还是0, 你就看情况给了
TopHead 2000-06-09
  • 打赏
  • 举报
回复
谢谢WEE,
1、可以不让超过宽度,可是没有办法实现在多页上打印表头啊!
2、存到服务器端让用户自己下载吗,我本来的想法是直接存到客户端上,是不是不能实现?

Baobao同志,在服务器端注册的打印控件怎么能在用户端使用呢?
WEE 2000-06-09
  • 打赏
  • 举报
回复
一点意见:
1。关于打印:是否可以用IE的打印功能来实现,只有你设计好HTML页的格式,让它宽度不要过大,要适合的话要多打几次试一试。不能有ASP控制打印机,那是不安全的。
2。关于文件保存
A。EMAIL到服务器,自己写代码控制。‘
B。在SERVER上生成文件。
WEE 6.9
baobao 2000-06-09
  • 打赏
  • 举报
回复
拿vb编个打印控件,在服务器上注册一下 regsvr32 *.dll,不就结了.
beta 2000-06-08
  • 打赏
  • 举报
回复
smallxiong的办法不错!
我以前的解决办法是用VBScript,但是限制多多。必须将站点设为信任站点;只能在Office 97下使用;不能在Office 2000下用。:-(
TopHead 2000-06-08
  • 打赏
  • 举报
回复
高手怎么不说话啊,到底是行还是不行啊?
visiond 2000-06-08
  • 打赏
  • 举报
回复
不会控件很难实现的,这个问题我已经想了很久啦
TopHead 2000-06-07
  • 打赏
  • 举报
回复
难道没人会吗?
TopHead 2000-06-07
  • 打赏
  • 举报
回复
高手快来看啊!!!
smallant 2000-06-07
  • 打赏
  • 举报
回复
是呀!客户端没装Excel怎么办呢?
huitor 2000-06-07
  • 打赏
  • 举报
回复
请教smallxiong:
1、你是如何得到ContentType="application/vnd.ms-excel"的?
2、如果想在服务器上生成excel文件,如何做?
huitor 2000-06-07
  • 打赏
  • 举报
回复
hi,
加载更多回复(11)

28,391

社区成员

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

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