【问题标题】:Save Excel spreadsheet as PDF将 Excel 电子表格另存为 PDF
【发布时间】:2015-12-11 01:48:50
【问题描述】:

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

                       ' 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")

【问题讨论】:

  • 您需要安装一个PDF库。例如PDFSharp
  • 感谢 SSS。我得到的错误是在 Dim workbook As New Workbook() 行上。它说 Workbook 类不存在。这是我需要设置的课程吗?我认为它可能是一个系统类。
  • Workbook 类是 Excel 互操作 DLL 的一部分,它不是 .NET 中系统命名空间的一部分。有关如何引用 Excel 互操作的更多信息:stackoverflow.com/questions/21817898/…
  • 如果这是问题Dim workbook As New Workbook() - 听起来像是编译时错误。还是运行时?有你的参考资料
  • 嗨,肖恩 - 我按照您提供的链接中概述的说明进行操作,但是当我查看 Microsoft..Excel 15.0 时,它没有显示的 .dll。救命!

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


【解决方案1】:

您可以使用.ExportAsFixedFormat 函数更简单,例如

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

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

【讨论】:

    【解决方案2】:

    坚果答案的后期版本..

    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
    

    附:我建议使用 Office PIA 进行开发(这样您可以获得 Intellisense 和帮助),然后在发布之前切换到后期绑定,这样您就不会被锁定到特定版本的 Office(另外,因此您不需要分发 PIA与您的应用程序)

    【讨论】:

      【解决方案3】:

      这只是您从 Excel 创建 PDF 的方法之一,或者就此而言 - 您可以通过编程方式访问的任何程序(以拓宽您的体验)。它是通过使用虚拟打印机。你需要

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

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

      我的想法是,如果您使用较旧的 interop/excel(抱歉,我无法确定版本已被切断)- 这是唯一的方法。

      【讨论】:

        【解决方案4】:

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

        【讨论】:

        • 我不是在寻找涉及额外费用的解决方案。因为我需要为 Spire.XLS DLL 付费,所以我不会使用它。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-09-22
        • 2011-12-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-15
        • 1970-01-01
        相关资源
        最近更新 更多