vb.net - 无需打开 Excel 应用程序即可打印预览 [VB.net]
问题描述
在 VB.net 中,我可以在不显示 Excel 应用程序的情况下打印预览吗?我在很多地方寻找过这个,但没有找到答案。
现在我使用这种方法。
Dim XSh As Object = CreateObject("excel.application")
XSh.workbooks.open("D:\WP\formPrint.xlsx")
XSh.visible = True
For i As Integer = 0 To count
XSh.worksheets(1).range("A21").value = DataGridView1.Rows(i).Cells(0).Value
XSh.worksheets(1).range("A22").value = DataGridView1.Rows(i).Cells(1).Value
XSh.worksheets(1).range("A23").value = DataGridView1.Rows(i).Cells(2).Value
XSh.worksheets(1).range("A24").value = DataGridView1.Rows(i).Cells(3).Value
XSh.Sheets.PrintPreview()
XSh.Sheets.PrintOut()
Next i
XSh.workbooks(1).close(SaveChanges:=False)
XSh.application.Quit
我试图改变
XSh.visible = False
它不显示任何东西。我只想显示打印预览不显示 excel 应用程序文件。我能怎么做?
解决方案
打印预览是 Excel 应用程序的一部分,因此它只会在您设置时显示XsH.visible = true
您也可以仅在显示打印预览之前将其设置为 true,并在打印时将其设置回 false。
Dim XSh As Object = CreateObject("excel.application")
XSh.workbooks.open("D:\WP\formPrint.xlsx")
XSh.visible = False
For i As Integer = 0 To count
XSh.worksheets(1).range("A21").value = DataGridView1.Rows(i).Cells(0).Value
XSh.worksheets(1).range("A22").value = DataGridView1.Rows(i).Cells(1).Value
XSh.worksheets(1).range("A23").value = DataGridView1.Rows(i).Cells(2).Value
XSh.worksheets(1).range("A24").value = DataGridView1.Rows(i).Cells(3).Value
XSh.visible = True
XSh.Sheets.PrintPreview()
XSh.Sheets.PrintOut()
XSh.visible = False
Next i
XSh.workbooks(1).close(SaveChanges:=False)
XSh.application.Quit
推荐阅读
- javascript - 将商品添加到购物车后如何更改商品颜色的解决方案?
- python - 我正在pygame中用python制作游戏。当我尝试加载图片时,我不断收到此错误:“argument 1 must be pygame.Surface, not str”
- bash - rsync 备份期间远程主机关闭与 xx.xx.xx.xx 的连接
- c# - VS2019 WinForms 在诊断工具中没有显示任何事件
- jsf - 在 p:dataTable 中的 p:ajax rowSelect 事件期间下载文件
- ios - 与 Expo 和 Branch 的通用链接:权利错误
- r - 多阶段 docker 构建失败,因为它在第一次构建时看不到 R
- python - Python - 删除文本文件中的“组”
- javascript - jquerytypeahead :使用不相关的词
- java - Retrofit - Json 响应可以包含不同的字段,具体取决于类型