用c#冻结excel列

我用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; } 

你可以帮我吗???

正确的解决scheme是添加以下代码:

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

你需要设置

 yuorRange.Application.ActiveWindow.FreezePanes = true; 

看一下

  • Window.FreezePanes属性
  • Window.SplitColumn属性
  • Window.SplitRow属性