[英]How to freeze a column using 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()
查看此测试样本
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.