2015-01-21 272 views
16

我想凍結excel中的前5列和3行。 我寫了下面的代碼爲在Excel中使用C#和EPPlus凍結窗格

Worksheets.View.FreezePanes(5, 5); 

,但在第一個4行還凍結列。 我想凍結excel中的前4列,但前4行除外。 可以做嗎?

+0

不知道我完全理解你正在嘗試做原來的問題。你是說你想從第5行開始凍結?所以當你向右滾動時,單元格A1到D4不會被凍結?這是你甚至可以在Excel中做的事情嗎? – Ernie 2015-01-21 13:35:54

回答

23

第一個值是要凍結多少行,第二個值是要凍結多少列。因此,凍結前3行5列,你就需要調用它,如下所示:

Worksheets.View.FreezePanes(3, 5); 

您還可以看看this SO questionFreezePanes更多信息。

+1

目前,凍結頂行會以某種方式禁用水平滾動。 – Rozen 2017-02-15 22:59:31

-3

您可以調用sheet.FreezePanes(INT的rowIndex,詮釋columnIndex)方法來設置面積結冰。

代碼示例:

using System; 
using Spire.Xls; 
using System.Drawing; 

namespace FreezePane 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      //Load File 
      Workbook workbook = new Workbook(); 
      workbook.LoadFromFile 
       (@"E:\Work\Documents\ExcelFiles\UserInfo.xlsx"); 
      Worksheet sheet = workbook.Worksheets[0]; 

      //Freeze Top Row 
      sheet.FreezePanes(2, 1); 

      //Save and Launch 
      workbook.SaveToFile("FreezePane.xlsx", ExcelVersion.Version2010); 
      System.Diagnostics.Process.Start(workbook.FileName); 
     } 
    } 
} 
+1

我想OP特意問了'EPPlus',而不是'Spire.Xls'。 – 2015-11-10 14:39:57

11

對我來說凍結的第一行下面的代碼工作。我不確定那裏有什麼邏輯。

worksheet.View.FreezePanes(2,1); 
+1

是的。 'sheet.View.FreezePanes(6,1);'爲我凍結前5行。 – 2016-04-07 15:20:18

+0

我假設你必須添加一個凍結行數/列數,因爲Excel的工作方式相同。要凍結Excel中的第一行,您必須選擇第一個*兩個*行(不要問我爲什麼) – 2016-05-27 18:26:27

+2

@AustinAdams:因爲(在Excel中以及在epplus中),您需要指示代表上 - 未冰凍區域的左角。基本上你會說:「好的,這是可滾動區域的第一個左上角的單元格;上面的所有單元格都被視爲列標題,而左側的所有單元格都被視爲行標題」 – digEmAll 2016-08-24 13:41:45

3

從ExcelWorksheet對象,請訪問查看財產。

在返回ExcelWorksheetView對象,調用FreezePanes(行,列)方法,傳遞這是不凍結第一單元格的行和列。

例如,凍結Excel工作表的第一個完整的兩個窗格,就需要在列(3,1)到行參數來傳遞:

worksheetObject.View.FreezePanes(3, 1); 

所以要完全凍結第一排您現在只能撥打worksheetObject.View.FreezePanes(2,1);

這是EPPlus官方示例中的also mentioned

因此,要回答@ user2148124答案提出應

worksheetObject.View.FreezePanes(3, 5);