简体   繁体   English

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

[英]Freeze Panes in multiple worksheets C#

I am working on MS Excel 2013 generating report where all the worksheets in workbook should have freeze pane at column 6 and row 1. I have searched on Google but could not find any solution as for freezing the pane, workbook has to be active. 我正在研究MS Excel 2013生成报告,其中工作簿中的所有工作表都应该在第6列和第1行有冻结窗格。我在Google上搜索但是找不到任何解决方案,因为冻结窗格,工作簿必须处于活动状态。 I have tried a lot of things but no success. 我尝试了很多但没有成功。 I will really appreciate if someone can help me. 如果有人能帮助我,我将非常感激。

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;

I Hope it help others. 我希望它可以帮助别人。 I have used ClosedXML Library for Excel and after creating each worksheet I used 我使用了ClosedXML Library for Excel,并在创建了我使用的每个工作表之后

worksheet.SheetView.Freeze(1,6);  

This freezes the Row 1, Col 6. You can freeze any row/column. 这会冻结第1行,第6行。您可以冻结任何行/列。 Here is link to ClosedXML . 这里是ClosedXML的链接。 It's widely supported and very good documentation. 它得到了广泛的支持和非常好的文档。

To freeze the panes on each worksheet you need to modify your for loop to add a line to activate the current sheet prior to setting the other properties. 要冻结每个工作表上的窗格,您需要修改for循环以添加一行以在设置其他属性之前激活当前工作表。 Here is my solution: 这是我的解决方案:

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; 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM