将Excel电子表格另存为PDF

时间:2015-09-14 23:15:09

标签: vb.net excel visual-studio pdf excel-interop

我正在尝试使用Visual Basic将Excel电子表格另存为PDF文件。我在网上找到了一些示例代码(见下文),但它让我打开了一个Visual Basic似乎无法识别的工作簿对象。建议......

                       ' load Excel file
        Dim workbook As New Workbook()
        workbook.LoadFromFile("D:\test.xlsx")

        ' Set PDF template
        Dim pdfDocument As New PdfDocument()
        pdfDocument.PageSettings.Orientation = PdfPageOrientation.Landscape
        pdfDocument.PageSettings.Width = 970
        pdfDocument.PageSettings.Height = 850

        'Convert Excel to PDF using the template above
        Dim pdfConverter As New PdfConverter(workbook)
        Dim settings As New PdfConverterSettings()
        settings.TemplateDocument = pdfDocument
        pdfDocument = pdfConverter.Convert(settings)

        ' Save and preview PDF
        pdfDocument.SaveToFile("sample.pdf")
        System.Diagnostics.Process.Start("sample.pdf")

4 个答案:

答案 0 :(得分:1)

使用.ExportAsFixedFormat功能可以更简单,例如

Dim workbook As New Workbook()
workbook.LoadFromFile("D:\test.xlsx")

workbook.activesheet.ExportAsFixedFormat xlTypePDF, "D:\test.pdf"

答案 1 :(得分:1)

nutsch的答案的后期版本..

Option Strict Off 'Required for Late Binding     

Module XL
  Sub ExcelPDF()
    Dim xl As Object
    xl = CreateObject("Excel.Application")
    Dim xwb As Object = xl.Workbooks.Open("D:\test.xlsx")
    xwb.ActiveSheet.ExportAsFixedFormat(0, "D:\sample.pdf")
    xl.Quit()
  End Sub
End Module

P.S。我建议使用Office PIA进行开发(这样你得到Intellisense& help),然后在发布之前切换到后期绑定,这样你就不会被锁定到特定版本的Office(同样,所以你不需要分发PIA与您的应用程序)

答案 2 :(得分:0)

这只是您如何使用Excel或其他方式创建PDF的方法之一 - 您可以通过编程方式访问的任何程序(以扩展您的体验)。它是通过使用虚拟打印机。你需要

  • 下载虚拟PDF打印机(许多可用,有些是免费的)。另外,了解任何给定打印机创建的PDF类型 - raster pdf vector pdf 。 Raster会创建更大的文件。
  • 安装(虚拟打印机)
  • 在代码中 - 您通常设置打印机属性,然后
  • 您在代码中使用互操作打开Excel并调用Print,您可以在其中设置打印机 - 您的虚拟PDF打印机,并根据打印机设置选项"打印到文件" 。某些虚拟打印机不需要这样做,因为您预设了它们的属性甚至(某些打印机)注册表项,您可以在其中设置文件名。

代码示例通常可从打印机供应商处获得。不同的相关博客还有更多内容。谷歌" .net"

的虚拟打印机

我认为,如果你使用较旧的interop / excel(对不起,我真的不能告诉版本被切断) - 这只是这样做的方法。

答案 3 :(得分:0)

工作簿不是一个Excel Interop类,也不是一类System。此示例代码基于Spire.XLS,这是第三方组件,使用户能够在.NET中操作Excel文件。在运行程序之前,需要将DLL下载并引用到项目中。