2013-03-22 35 views
1

我試圖用VB.NET打印Excel電子表格的PAPERSIZE財產,但我得到一個錯誤無法設置PageSetup類

無法設置PageSetup類

的PAPERSIZE財產

這裏是我的代碼,

Dim oldCI As System.Globalization.CultureInfo = System.Threading.Thread.CurrentThread.CurrentCulture 
    System.Threading.Thread.CurrentThread.CurrentCulture = New System.Globalization.CultureInfo("en-US") 

    With application 
     .AutomationSecurity = Microsoft.Office.Core.MsoAutomationSecurity.msoAutomationSecurityForceDisable 
     .Visible = False 
     .EnableEvents = False 
     .DisplayAlerts = False 
     .ScreenUpdating = False 
    End With 

    Dim workbook As Excel.Workbook 
    Dim worksheet As Excel.Worksheet 
    'Open as readonly and do not update links 
    workbook = application.Workbooks.Open(_fileName, 2, True) 

    For Each worksheet In workbook.Worksheets 
     worksheet.PageSetup.PaperSize = _paperSize 
    Next 

    workbook.PrintOutEx() 
    workbook.Close(False) 
    application.Quit() 

    System.Threading.Thread.CurrentThread.CurrentCulture = oldCI 

    worksheet = Nothing 
    application = Nothing 

此代碼的工作我的開發機器上,當我部署到測試服務器的代碼失敗。服務器上已經安裝了默認打印機驅動程序。

+0

它是否已經在第一個實例失敗?或者在特定的工作表上? – 2013-03-22 14:24:27

+0

你有什麼錯誤?你正在使用正確的枚舉權? http://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel.xlpapersize.aspx – 2013-03-22 14:25:23

+0

它在第一個實例上失敗 – user65439 2013-03-25 08:09:12

回答

0

您可以使用辦公自動化改變頁面大小像這樣

worksheet.PageSetup.PaperSize = WdPaperSize.wdPaperLetter 

或選擇從下拉列表中的任何其他紙張類型「WdPaperSize。」

希望它能幫助你一點。

+1

如果你看看上面的代碼,這是爲每個工作表完成的 – user65439 2013-03-25 08:24:02

3

您需要安裝打印機驅動程序。 Excel的PageSetup類必須與打印機驅動程序進行交互

我在運行Mac Parallels(虛擬機)的Windows 8上運行相關代碼時出現類似問題。對於任何正在Mac Parallels上部署Visual Studio的人,以下是我在做的:

  1. 禁用打印機在Mac和Windows之間共享。轉至Parallels (VM)>配置>硬件,然後單擊打印。取消選中「添加所有的Mac 打印機」和「同步默認打印機」
  2. 安裝打印機的驅動程序在Windows
  3. 爲了通過相同的無線路由器 獲得分配的IP地址(如果你需要連接到打印機無線),你需要將橋接設置爲 。轉到Parallels的 (VM)>配置>硬件>「網絡1」,然後選擇網絡類型爲機場和DHCP服務器自動
0

問題的核心是在_paperSize不變。在我的情況下,這是給在相同的誤差:(原諒C#)

worksheet.PageSetup.PaperSize = Excel.XlPaperSize.xlPaperLedger; 

根據打印機的,例如「賬本」尺寸的紙張可以被定義爲的11x17或小報。找出打印驅動程序指的是頁面大小什麼,然後

沒有工作:

excel.ActiveSheet.PageSetup.PaperSize = Excel.XlPaperSize.xlPaperLedger 

excel.ActiveSheet.PageSetup.PaperSize = Excel.XlPaperSize.xlPaper11x17 

保護正常工作:

excel.ActiveSheet.PageSetup.PaperSize = Excel.XlPaperSize.xlPaperTabloid 

我希望這可以幫助任何人有令人沮喪的問題與Microsoft Excel的枚舉有趣的不一致。