多个工作表中的冻结窗格 C#

6
我正在处理生成报告的 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;
2个回答

12

我希望这能帮助到其他人。在我的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; 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接