以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]EXCEL报表打印的问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=2540)

--  作者:t_fs
--  发布时间:2009/4/21 10:45:00
--  [求助]EXCEL报表打印的问题

EXCEL报表直接打印代码
Dim Proc As New Process
Proc.File = "C:\\test.xls"
Proc.Verb = "Print" \'指定动作
Proc.Start()


      以上是直接打印EXCEL报表的代码,如果稍加改动一下,改成先直接预览然后再打印。

     请高手帮助修改一下。谢谢!

[此贴子已经被作者于2009-4-21 10:45:43编辑过]

--  作者:狐狸爸爸
--  发布时间:2009/4/21 11:13:00
--  
如果这样,删除
Proc.Verb = "Print" \'指定动作

这样直接预览,如果想打印,再单击打印按钮。

--  作者:yangming
--  发布时间:2009/4/21 11:23:00
--  
属性Verb可以设置打开的动作,不同的外部程序,支持的动作会不同,对于Excel文件,支持三个Verb动作:
Open: 打开,这也是默认的动作。
OpenAsReadOnly:以只读方式打开
Print:打印,完成打印后自动关闭
--  作者:t_fs
--  发布时间:2009/4/21 13:25:00
--  
以下是引用狐狸爸爸在2009-4-21 11:13:00的发言:
如果这样,删除
Proc.Verb = "Print" \'指定动作

这样直接预览,如果想打印,再单击打印按钮。

      删除    Proc.Verb = "Print"    后,并不是直接预览,而是打开文件。 
    
      正如yangming所述:

      Open: 打开,这也是默认的动作。


再请教一下yangming,我按如下代码测试,没有达到以只读方式打开的目的,难道代码不正确吗?

Dim Proc As New Process
Proc.File = "C:\\test.xls"
Proc.Verb = "OpenAsReadOnly"      \'指定动作
Proc.Start()

    谢谢回复!


--  作者:shxiaoya
--  发布时间:2009/4/21 13:40:00
--  
 

Dim Book As New XLS.Book
Dim
Sheet As XLS.Sheet = Book.Sheets(0)
Sheet.Locked = True \'禁止编辑
Book.Save(
"C:\\test.xls") \'保存工作簿
Dim
Proc As New Process \'打开工作簿
Proc.File = "C:\\test.xls"
Proc.Start()


--  作者:yangming
--  发布时间:2009/4/21 13:44:00
--  
OpenAsReadOnly,这个没有达到目的,那是微软的问题,目前只能按五楼的代码处理只读的问题了
[此贴子已经被作者于2009-4-21 13:46:45编辑过]

--  作者:t_fs
--  发布时间:2009/4/21 14:19:00
--  
以下是引用shxiaoya在2009-4-21 13:40:00的发言:
 

Dim Book As New XLS.Book
Dim
Sheet As XLS.Sheet = Book.Sheets(0)
Sheet.Locked = True \'禁止编辑
Book.Save(
"C:\\test.xls") \'保存工作簿
Dim
Proc As New Process \'打开工作簿
Proc.File = "C:\\test.xls"
Proc.Start()

  谢谢回复!
  上述功能可以实现禁止编辑了,但它打开的不是原来已存在的电子表格文件,而是一个新建立的空白表格。
不知错在哪儿了?


--  作者:狐狸爸爸
--  发布时间:2009/4/21 14:24:00
--  
以下是引用t_fs在2009-4-21 14:19:00的发言:

  谢谢回复!
  上述功能可以实现禁止编辑了,但它打开的不是原来已存在的电子表格文件,而是一个新建立的空白表格。
不知错在哪儿了?


你看看代码,这个代码就是新建一个Excel文件,并不是基于模板的。


--  作者:blackzhu
--  发布时间:2009/4/21 15:15:00
--  
以下是引用t_fs在2009-4-21 14:19:00的发言:

  谢谢回复!
  上述功能可以实现禁止编辑了,但它打开的不是原来已存在的电子表格文件,而是一个新建立的空白表格。
不知错在哪儿了?

im Book As New XLS.Book(ProjectPath & "Attachments\\模板.xls") \'打开模板
Dim Sheet As XLS.Sheet = Book.Sheets(0)
Book.Build() \'生成细节区
Book.Save("D:\\保存路径\\reports\\模板.xls") \'保存工作簿
Dim Proc As New Process \'打开工作簿
Proc.File = "D:\\保存路径\\reports\\模板.xls"

Proc.Start()


--  作者:yangming
--  发布时间:2009/4/21 15:58:00
--  
Dim Book As New XLS.Book(ProjectPath & "Attachments\\出库单.xls") \'打开模板
Dim Sheet As XLS.Sheet = Book.Sheets(0)
Sheet.Locked = True \'禁止编辑
Book.Build() \'生成细节区
Book.Save("c:\\reports\\test.xls") \'保存工作簿
Dim Proc As New Process \'打开工作簿
Proc.File = "c:\\reports\\test.xls"
Proc.Start()
这样看看,你可以在范例中的:Excel报表.table中的命令窗口中测试此代码