【问题标题】:Freeze Panes in multiple worksheets C#冻结多个工作表中的窗格 C#
【发布时间】:2014-01-30 21:33:07
【问题描述】:
我正在处理 MS Excel 2013 生成报告,其中工作簿中的所有工作表都应该在第 6 列和第 1 行有冻结窗格。我在 Google 上搜索过,但找不到任何解决方案来冻结窗格,工作簿必须是积极的。我尝试了很多东西,但没有成功。如果有人可以帮助我,我将不胜感激。
Excel.Application excel = new Excel.Application();
Excel.Workbook workbook = excel.Workbooks.Open("filelocation");
foreach (Excel.Worksheet ws in workbook.Worksheets)
{
ws.Application.ActiveWindow.SplitColumn = 6;
ws.Application.ActiveWindow.SplitRow = 1;
ws.Application.ActiveWindow.FreezePanes = true;
}
excel.Visible = true;
【问题讨论】:
标签:
c#
winforms
excel
office-interop
excel-interop
【解决方案1】:
我希望它可以帮助其他人。我使用了 Excel 的 ClosedXML 库,并在创建每个工作表后使用了
worksheet.SheetView.Freeze(1,6);
这将冻结第 1 行、第 6 列。您可以冻结任何行/列。
这是ClosedXML的链接。它得到了广泛的支持和非常好的文档。
【解决方案2】:
要冻结每个工作表上的窗格,您需要修改 for 循环以添加一行以在设置其他属性之前激活当前工作表。这是我的解决方案:
Excel.Application excel = new Excel.Application();
Excel.Workbook workbook = excel.Workbooks.Open("filelocation");
foreach (Excel.Worksheet ws in workbook.Worksheets)
{
ws.Activate();
ws.Application.ActiveWindow.SplitColumn = 6;
ws.Application.ActiveWindow.SplitRow = 1;
ws.Application.ActiveWindow.FreezePanes = true;
}
excel.Visible = true;