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

时间:2014-01-30 21:33:08

标签: c# winforms excel office-interop excel-interop

我正在开发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 个答案:

答案 0 :(得分:7)

我希望它可以帮助别人。我使用了ClosedXML Library for Excel,在创建了我使用的每个工作表之后

worksheet.SheetView.Freeze(1,6);  

这会冻结第1行,第6行。您可以冻结任何行/列。 这是ClosedXML的链接。它得到了广泛的支持和非常好的文档。

答案 1 :(得分:1)

要冻结每个工作表上的窗格,您需要修改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;