Foxtable(狐表)用户栏目专家坐堂 → Excel报表直接打印


  共有3152人关注过本帖树形打印复制链接

主题:Excel报表直接打印

帅哥哟,离线,有人找我吗?
wakai
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:360 积分:3422 威望:0 精华:0 注册:2016/5/25 21:31:00
Excel报表直接打印  发帖心情 Post By:2018/10/10 15:29:00 [只看该作者]

现代码为
Dim Book As New XLS.Book(ProjectPath & "templets\打印标签.xls")
Dim r As Row = e.Form.controls("标签明细").Table.Current
Dim fl As String = "打印标签1.xls"
Dim Sheet As XLS.Sheet = Book.Sheets(0)

Book.Build() '生成细节区
Book.Save(fl) '保存工作簿
Dim Proc As New Process '打开工作簿
Proc.File = fl
Proc.Start()
先生成EXCEL并打开,然后手工打印
如何实现生成EXCLE后不需要打开,并直接打印,谢谢老师

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/10/10 15:33:00 [只看该作者]

用vba即可,参考

 

打印输出

利用PageSetup属性,可进行各种打印设置。如:


Dim App As New MSExcel.Application
Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open("D:\Report.xls")
Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(1)
With Ws.PageSetup
    '设置打印区域
    .PrintArea = "A1:H10"   '打印工作表的指定区域
    .PrintArea = Ws.UsedRange.Address   '打印工作表的使用区域
    .PrintTitleColumns = Ws.Columns("A:H").Address   '打印列标题(在每一页的左边重复出现)
    .PrintTitleRows = Ws.Rows(1).Address '打印行标题(在每一页的顶部重复出现)
    '设置页面
    .PaperSize = MSExcel.XlPaperSize.xlPaperA4   '纸张大小
    .LeftMargin = 30 '页面左边距
    .RightMargin = 30'页面右边距
    .TopMargin = 50  '页面顶部边距
    .BottomMargin = 50   '页面底部边距
    .HeaderMargin = 40   '页面顶端到页眉的距离
    .FooterMargin = 40   '页脚到页面底端的距离
    .CenterHorizontally = True   '页面水平居中
    .CenterVertically = True '页面垂直居中
    '设置页眉
    .LeftHeader = "打印日期: &D" '左页眉,&D表示日期
    .CenterHeader = "&""隶书,常规""&20 数据分析表"   '中页眉,并将字体设置为隶书和20号字大小
    .RightHeader = "打印者: " & App.UserName '右页眉
    '设置页脚
    .LeftFooter = "文件: &F  &A" '左页脚,&F表示文件名,&A表示工作表名
    .CenterFooter = ""   '中页脚为空
    .RightFooter = "第 &P 页  共 &N 页"  '右页脚
    '打印模式
    .Orientation = MSExcel.xlPageOrientation.xlPortrait  '纵向打印
    .Orientation = MSExcel.xlPageOrientation.xlLandscape '横向打印
    .PrintHeadings = True'打印行号和列标
    .PrintGridlines = True   '打印网格线
    '缩放打印
    .Zoom = False'以下设置将缩印在一页内
    .FitToPagesWide = 1  '按照1页的宽度打印
    .FitToPagesTall = 1  '按照1页的高度打印
End With
App.Visible = True
Ws.PrintPreview
App.Quit

补充说明,Zoom是用于设置打印工作表时的缩放比例,数值在10和400之间。如果本属性设为False,则由FitToPagesWide属性和FitToPagesTall属性的设定值对工作表的缩放进行控制。 

预览和打印

  • PrintPreview

    打印预览。执行该方法时,如果将参数设为False,则不允许在预览时进行打印设置。

    如:Ws.PrintPreview(False)

    注意,在执行打印预览时,必须先将Application的Visible设置为True!
     
  • PrintOut

    直接打印。如,Ws.PrintOut

    该方法还可通过设置有关参数来控制打印,如下面的代码就是打印第1-10页,打印份数为3,打印前先预览,指定的打印机为"pdfFactory Pro":

    Ws.PrintOut(From:=1,To:=10,Copies:=3,Preview:=True,ActivePrinter:="pdfFactory Pro")

换页打印


 回到顶部
帅哥哟,离线,有人找我吗?
wakai
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:360 积分:3422 威望:0 精华:0 注册:2016/5/25 21:31:00
  发帖心情 Post By:2018/10/11 0:50:00 [只看该作者]

老师,按钮下代码,在开发者未发布模式可以正常使用,发布后在本机和内网其它电脑均提示:打开文件失败!
.NET Framework 版本:2.0.50727.8669
Foxtable 版本:2018.10.9.1
错误所在事件:窗口,打印标签,Button2,Click
详细错误信息:
打开存储文件失败。

请问老师什么原因

Dim Book As New XLS.Book(ProjectPath & "templets\打印标签.xls")
Dim r As Row = e.Form.controls("标签明细").Table.Current
Dim fl As String = "d:\print.xls"
Dim Sheet As XLS.Sheet = Book.Sheets(0)

Book.Build() '生成细节区
Book.Save(fl) '保存工作簿
'Dim Proc As New Process '打开工作簿
'Proc.File = fl
'Proc.Start()
Dim App As New MSExcel.Application
Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open("d:\print.xls")
Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(1)
Ws.PrintOut
Wb.Close
App.Quit

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/10/11 8:43:00 [只看该作者]

Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open("d:\print.xls")

 

改成

 

Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open(fl)

 回到顶部
帅哥哟,离线,有人找我吗?
wakai
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:360 积分:3422 威望:0 精华:0 注册:2016/5/25 21:31:00
  发帖心情 Post By:2018/10/11 8:55:00 [只看该作者]

老师还是一样问题,发布后提示打开存储文件失败

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/10/11 9:05:00 [只看该作者]

改成这样呢?

 

Dim Book As New XLS.Book(ProjectPath & "templets\打印标签.xls")
Dim r As Row = e.Form.controls("标签明细").Table.Current
Dim fl As String = "d:\test.xls"
Dim Sheet As XLS.Sheet = Book.Sheets(0)

Book.Build() '生成细节区
Book.Save(fl) '保存工作簿

Dim App As New MSExcel.Application
Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open(fl)
Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(1)
Ws.PrintOut
Wb.Close
App.Quit


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/10/11 9:10:00 [只看该作者]

如果6楼还报错,就是你这句代码有问题,核对一下文件路径

 

Dim Book As New XLS.Book(ProjectPath & "templets\打印标签.xls")

 


 回到顶部
帅哥哟,离线,有人找我吗?
wakai
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:360 积分:3422 威望:0 精华:0 注册:2016/5/25 21:31:00
  发帖心情 Post By:2018/10/11 9:25:00 [只看该作者]

Dim Book As New XLS.Book(ProjectPath & "templets\打印标签.xls")
Dim r As Row = e.Form.controls("标签明细").Table.Current
Dim fl As String = "d:\print.xls"
Dim Sheet As XLS.Sheet = Book.Sheets(0)
Book.Build() '生成细节区
Book.Save(fl) '保存工作簿
Dim Proc As New Process '打开工作簿
Proc.File = fl
Proc.Start()
老师,经测试上面代码就出现了打开错误

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/10/11 9:26:00 [只看该作者]

你这句代码有问题,核对一下文件路径

 

Dim Book As New XLS.Book(ProjectPath & "templets\打印标签.xls")


 回到顶部
帅哥哟,离线,有人找我吗?
wakai
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:360 积分:3422 威望:0 精华:0 注册:2016/5/25 21:31:00
  发帖心情 Post By:2018/10/11 9:29:00 [只看该作者]

文件模版和生成都没有问题,就是发布后用程序打不开文件来,不发布又可以,文件储存路径在电脑资源管理器上也能打开

 回到顶部
总数 12 1 2 下一页