2015-09-14 143 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付費,所以我不會使用它。 –

相關問題