2015-09-14 141 views
2

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

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

您需要安装PDF库。例如PDFSharp – SSS

+0

谢谢SSS。我得到的错误是在Dim workbook As New Workbook()行中。它表示Workbook类不存在。这是我需要建立的课程吗?我认为这可能是一个系统课。 –

+0

Workbook类是Interop DLL for Excel的一部分,它不是.NET中System名称空间的一部分。有关如何引用Excel Interop的更多信息:http://stackoverflow.com/questions/21817898/where-can-i-find-microsoft-office-interop-excel-in-the-assembly-com-browser –

回答

1

您可以通过使用.ExportAsFixedFormat函数(例如,

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

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

这仅仅是你如何创建PDF导出Excel或与此有关的方法之一 - 您可以访问编程(扩大你的经验)的任何程序。它是通过使用虚拟打印机。您将需要

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

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

而我认为,如果你使用旧的interop/excel(对不起,我不能真正告诉版本切断) - 这是唯一的方法来做到这一点。

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 

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

+0

感谢您的扩展。 – nutsch

0

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

+0

我并不是在寻找一种解决方案,其中涉及额外的成本。因为我需要为Spire.XLS DLL付费,所以我不会使用它。 –

相关问题