首页 > 解决方案 > 无需打开 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 应用程序文件。我能怎么做?

标签: vb.netvb.net-2010

解决方案


打印预览是 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

推荐阅读