如何使用Excel Interop API冻结列?

如何使用Excel的Interop API在.NET中冻结列。 不要在乎你写代码的.Net语言。我试过:

Public Sub FreezeColumn(ByVal FileName As String, ByVal SheetName As String, ByVal RangeName As String) Dim oExcel As Excel.Application = Nothing Try oExcel = New Excel.Application oExcel.Visible = False If String.IsNullOrEmpty(RangeName) Then Exit Sub oExcel.Workbooks.Open(FileName, False, True) oExcel.DisplayAlerts = False For Each wsheet As Worksheet In oExcel.ActiveWorkbook.Worksheets If wsheet.Name = SheetName Then wsheet.Range(RangeName).Select() oExcel.ActiveWindow.FreezePanes = True Exit For End If Next oExcel.Save() Catch ex As Exception Throw Finally If Not IsNothing(oExcel) Then If Not IsNothing(oExcel.ActiveWorkbook) Then oExcel.ActiveWorkbook.Close(SaveChanges:=True) ProcessHandler.ExcelDispose(oExcel) oExcel = Nothing End If End If End Try End Sub 

您需要先激活表格,然后才能冻结窗格。

 wsheet.Activate 

之前

 wsheet.Range(RangeName).Select() 

看这个testing样品

 Imports Excel = Microsoft.Office.Interop.Excel Public Class Form1 Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) _ Handles Button1.Click Dim oExcel As New Excel.Application oExcel.Visible = True oExcel.Workbooks.Open("C:\book1.xls", False, True) oExcel.DisplayAlerts = False For Each wsheet As Excel.Worksheet In oExcel.ActiveWorkbook.Worksheets If wsheet.Name = "Sheet1" Then wsheet.Activate() wsheet.Range("A1").Select() oExcel.ActiveWindow.FreezePanes = True Exit For End If Next End Sub End Class