无法设置PageSetup类的PaperSize属性

我试图用VB.NET打印一个Excel电子表格,但我得到一个错误

无法设置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 

这个代码在我的开发机器上工作,只要我部署到testing服务器代码失败。 服务器上已经安装了默认打印机驱动程序。

您需要安装打印机驱动程序。 Excel的PageSetup类必须与打印机驱动程序交互

我在运行Mac Parallels(虚拟机)的Windows 8上运行相关代码时出现类似的问题。 对于在Mac Parallels上进行Visual Studio部署的任何人,以下是我正在做的事情:

  1. 禁用Mac和Windows之间共享的打印机。 转到Parallels(VM)>configuration>硬件,然后单击打印。 取消选中“添加所有Mac打印机”和“同步默认打印机”
  2. 在Windows上安装打印机驱动程序
  3. 为了通过同一个无线路由器获得分配的IP地址(如果您需要无线连接到打印机),您需要将networking设置为桥接。 转到Parallels(VM)>configuration>硬件>“networking1”,然后selectnetworkingtypes为机场和DHCP服务器作为自动

你可以使用办公自动化来改变页面大小

 worksheet.PageSetup.PaperSize = WdPaperSize.wdPaperLetter 

或从“WdPaperSize”的下拉列表中select任何其他纸张types。

希望它能帮助你一点。

核心问题在_paperSize常量中。 在我的情况,这是给同样的错误:(原谅C#)

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

取决于打印机,例如“分类帐”大小的纸张可能被定义为11×17或小报。 找出打印驱动程序引用的页面大小,然后

不工作:

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

保护正常工作:

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

我希望这可以帮助任何人有令人沮丧的问题与Microsoft Excel的枚举有趣的不一致。