如何用asp打开一个被密码保护的excel文件(密码已知)在线等待(特急)

csdn_wangkp 2005-09-30 09:54:16
想显示一个excel文件,文件有密码保护,用什么方式打开都行。
但不要手动输入密码,就是让看的人不知道有密码这回事。


请大家帮忙。
...全文
621 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
csdn_wangkp 2005-10-03
  • 打赏
  • 举报
回复
感谢大家,这两天被客户折磨糊涂了,忘了结贴,马上结!!!

特别谢谢 mymyal123(风之森)qiqunet(瑞旗·广东) ,还有其他关注的朋友。
mymyal123 2005-09-30
  • 打赏
  • 举报
回复
Dim oExcel As Excel.Application '定义一个excel的应用对象
Dim oBook As Excel.Workbook '定义一个工作表
'要使用上面的两个对象必须在工程中引用excel的动态库.
Dim i As Long

Set oExcel = CreateObject("Excel.Application")
'用createobject创建一个实例并传给oexcel.
'还可以直接用set oExcel = new Excel.Application ,
'原来上面的声明是直接用object的,后来为了VB可以直接看到属性方法才这样写的.


sOpenUser = Trim(txtUser.Text)
'密码一般有两个,读密码和写密码.
'分别拿到
sRPassword = Trim(txtReadPassword.Text)
sWPassword = Trim(txtWritePassword.Text)
'调用工作表的.open方法打开指定的文件,最重要的就是参数了.
'不过我想仔细看一下还是不难理解的,注意顺序和位置就可以了.
Set oBook = oExcel.Workbooks.Open(sFullFileName, , , , sRPassword, sWPassword)
'打开后你就可以直接操作这个文件了.
'下面的用法是把它另存到一个文件里,这是为了我操作方便而写的,我要用ADO直接打开这个文件,
'而ADO是不能直接打开带密码的文件,所以我另存到一个新文件中,然后再打开新的文件.
'后面的操作就看你怎么用了.这个我就不多说了.
oExcel.Visible = True
'打开excel了.
oBook.SaveAs GetWindowsTempPath & "SaveAs.xls", , "", ""
sFullFileName = GetWindowsTempPath & "SaveAs.xls"


'最后使用结束时一定要把两个对象关闭并退出,不然会在内存中注留下来,这是不好的.
oBook.Close

oExcel.Quit
csdn_wangkp 2005-09-30
  • 打赏
  • 举报
回复
怎么在列表上看不到这个贴子。。。等待
wanghui0380 2005-09-30
  • 打赏
  • 举报
回复
mymyal123(风之森) 是正解

在ie中直接开始没问题的,把这段代码用在客户端vbscript中就成了
qiqunet 2005-09-30
  • 打赏
  • 举报
回复

O,看来可行的办法只有你想到的那个——复制一份没有密码的。

csdn_wangkp 2005-09-30
  • 打赏
  • 举报
回复
to qiqunet(瑞旗·广东) :

谢谢回复,不过你似乎理解错了,我不需要对excel文件作修改,我只要原原本本的显示出来即可,


至于文件有多少个sheet,有什么文字,图形我都管不了。


再等30分钟,没有的话,就结贴!!
qiqunet 2005-09-30
  • 打赏
  • 举报
回复
excel的操作代码,可通过Excel程序的“录制新的宏”功能录制和修改。

<%
set myexcell=CreateObject("Excel.Application")
set mywork=myexcell.Workbooks.Open(server.MapPath("test.xls"), , , , "myOpenPass", "myModifyPass")
myexcell.DisplayAlerts = False
set Activesheet=myexcell.sheets("sheet1")
Activesheet.cells(1,1)="file was open at " & now()
mywork.save
mywork.close
set mywork=nothing
set myexcell=nothing
%>
csdn_wangkp 2005-09-30
  • 打赏
  • 举报
回复
to qiqunet(瑞旗·广东) :

谢谢回复。我还是希望能不用另存的方式,毕竟又慢又不好,可以目前又没有其他方法,

客户催的紧,今天晚上就要答复,哎,难呀!!

qiqunet 2005-09-30
  • 打赏
  • 举报
回复

可以在每次开启生成同类Excel文件的那个页面中清理对应目录中的旧文件。

例如每次下载前,先用FSO检查是否有修改日期大于一天的文件,有就删除。

set theFolder=fso.GetFolder(server.MapPath("output"))
for Each theFile In theFolder.Files
if DateDiff("d",theFile.DateLastModified,now)>1 then fso.DeleteFile theFile
next
set theFolder=nothing
csdn_wangkp 2005-09-30
  • 打赏
  • 举报
回复
我也没办法,客户就这样要求,又没有什么好办法?
mymyal123 2005-09-30
  • 打赏
  • 举报
回复
唉,excel 加什么密,浪费表情啊...
csdn_wangkp 2005-09-30
  • 打赏
  • 举报
回复
等待.....
csdn_wangkp 2005-09-30
  • 打赏
  • 举报
回复
to mymyal123(风之森) :

刚才我又想到如果用另存的方式的话,什么时候删掉这些临时文件是个问题!!
还请给个建议!
csdn_wangkp 2005-09-30
  • 打赏
  • 举报
回复
to itzhiren(itzhiren) :

我没明白你说的意思,原来的文件名我本来就可以拿到,只是他带密码。
我想另存为一个不带密码的,然后这样才可以用ie直接打开,又不用手动输入密码!!
itzhiren 2005-09-30
  • 打赏
  • 举报
回复
为什么要另存一下,再拿到文件名,再打开?
csdn_wangkp 2005-09-30
  • 打赏
  • 举报
回复
to mymyal123(风之森) :
tigerwen01(小虎)(编程艺术化) :

你好,我刚才大致测试了一下,前三行代码不能用,删掉就没什么问题了。
另外就是我要打开的这个excel文件,只做显示用,它里面是什么内容一点都不知道,
我只能用ie直接去打开他。但现在这种创建对象的方式如何把内容抛给ie,我不知道。

我现在的想法是打开带密码文件后,另存一下,然后拿到文件名,用windows.open打开,
请问又没有其他的方法?
tigerwen01 2005-09-30
  • 打赏
  • 举报
回复
是ASP啊,是VB脚本当然跟VB很相象。
csdn_wangkp 2005-09-30
  • 打赏
  • 举报
回复
to mymyal123(风之森) :

我刚才出去办事了,才回来,很感谢你的回复。
我看了代码,似乎不是asp,好像是vb的代码,赫赫
不管怎么说,我先调试一下,看看结果,一会报告

28,406

社区成员

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

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