从ASP.NET应用程序中缩小EXCEL

任何人都可以告诉我如何通过ASP.NET应用程序在Excel工作表上设置缩放因子。 我相信Excel工作表对象有一个似乎没有工作的PageSetup.Zoom属性。 当我通过ASP.NET以编程方式生成报表时,我将工作簿中所有工作表的缩放因子设置为100%。

这是一个代码示例

oSheet.PageSetup.CenterHorizontally = true; oSheet.PageSetup.CenterVertically = true; oSheet.PageSetup.Orientation = XlPageOrientation.xlPortrait; oSheet.PageSetup.PaperSize = XlPaperSize.xlPaperA4; oSheet.PageSetup.Order = XlOrder.xlDownThenOver; oSheet.PageSetup.Zoom = 85; 

另一个选项是由macros生成的ActiveWindow.Zoom,但它是macros特定的。 提出这个问题的要点是报告生成后,Excel工作簿中所有页面的缩放比例应该是85%。 任何投入将不胜感激。

SpreadsheetGear for .NET允许您设置Excel工作表的缩放因子,如下所示:

 SpreadsheetGear.IWorkbook workbook = SpreadsheetGear.Factory.GetWorkbook(); SpreadsheetGear.IWorksheet worksheet = workbook.Worksheets[0]; worksheet.WindowInfo.Zoom = 150; 

Microsoft不支持并build议不要在ASP.NET中使用带有COM Interop的Office(请参阅“服务器端自动化的Office知识库文章的注意事项 ”)。

你可以在这里看到使用ASP.NET的SpreadsheetGear演示的C#和VB实例,并在这里下载一个免费的试用版。

免责声明:我自己的SpreadsheetGear LLC

PageSetup只影响打印。 你需要使用窗口缩放。 在C#中是这样的:

 Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application(); xlApp.ActiveWindow.Zoom = 150; 

这只会影响活动窗口中的工作表,而不是每个工作表。 您还可以通过工作簿( wbk.Windows[0].Zoom )而不是xlApp.ActiveWindow

Workbook对象MyWorkbook中的所有工作表实现此目的的方法是select所有工作表,然后按下ActiveWindow

 MyWorkbook.Sheets.Select(Type.Missing); MyWorkbook.Windows[1].Zoom = 150; 

我testing了这个和Windows [1]似乎给你文档级的定制。 我在将这段代码embedded到工作簿的启动事件中时遇到了问题,但似乎没有问题。