【问题标题】: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; 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-09-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-19
        • 2016-04-01
        • 2023-02-03
        • 2012-05-25
        相关资源
        最近更新 更多