有人可以告诉我如何通过ASP.NET应用程序在Excel工作表上设置缩放系数。我相信Excel Sheet对象有一个 PageSetup.Zoom 属性,似乎不起作用。当我通过ASP.NET以编程方式在Excel中生成报表时,我将工作簿中所有工作表的缩放系数视为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;
另一个选项是由宏生成的ActiveWindow.Zoom,但它是特定于宏的。问这个问题的重点是在生成报告之后,Excel工作簿中所有页面的缩放系数应该 85%。 任何投入都将受到高度赞赏。
答案 0 :(得分:3)
SpreadsheetGear for .NET允许您设置Excel工作表的缩放系数,如下所示:
SpreadsheetGear.IWorkbook workbook = SpreadsheetGear.Factory.GetWorkbook();
SpreadsheetGear.IWorksheet worksheet = workbook.Worksheets[0];
worksheet.WindowInfo.Zoom = 150;
Microsoft不支持并建议不要在ASP.NET中使用带有COM Interop的Office(请参阅此Considerations for server-side Automation of Office知识库文章)。
您可以看到实时C#和VB示例演示如何使用ASP.NET here中的SpreadsheetGear并下载免费试用版here。
免责声明:我拥有SpreadsheetGear LLC
答案 1 :(得分:1)
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 中的所有工作表实现此方法的方法是选择所有工作表,然后点击 ActiveWindow :
MyWorkbook.Sheets.Select(Type.Missing);
MyWorkbook.Windows[1].Zoom = 150;
我对此进行了测试,Windows [1]似乎为您提供了文档级自定义。我在将这段代码嵌入到工作簿的Startup事件中时遇到了问题,但它似乎还没那么顺利。