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