2010-11-05 91 views
5

我用c#生成了excel spread-cheat,我想凍結第一列。 這是我使用的代碼:用c#凍結excel列#

public static void SaveToExcel(object[,] data) 
    { 
     Excel = Microsoft.VisualBasic.Interaction.CreateObject("Excel.Application", String.Empty); 
     Excel.ScreenUpdating = false; 
     dynamic workbook = Excel.workbooks; 
     workbook.Add(); 

     dynamic worksheet = Excel.ActiveSheet; 

     const int left = 1; 
     const int top = 1; 
     int height = data.GetLength(0); 
     int width = data.GetLength(1); 
     int bottom = top + height - 1; 
     int right = left + width - 1; 

     if (height == 0 || width == 0) 
      return; 

     dynamic rg = worksheet.Range[worksheet.Cells[top, left], worksheet.Cells[bottom, right]]; 
     rg.Value = data; 

     // Set borders 
     for (var i = 1; i <= 4; i++) 
      rg.Borders[i].LineStyle = 1; 

     // Set header view 
     dynamic rgHeader = worksheet.Range[worksheet.Cells[top, left], worksheet.Cells[top, right]]; 
     rgHeader.Font.Bold = true; 
     rgHeader.Interior.Color = 189 * (int)Math.Pow(16, 4) + 129 * (int)Math.Pow(16, 2) + 78; 
     rg.EntireColumn.AutoFit(); 

     // Show excel app 
     Excel.ScreenUpdating = true; 
     Excel.Visible = true; 
    } 

你能幫幫我嗎?

回答

11

正確的解決方案是添加下面的代碼:

 worksheet.Activate(); 
     worksheet.Application.ActiveWindow.SplitColumn = 1; 
     worksheet.Application.ActiveWindow.FreezePanes = true;