自定义EXCEL类的整理(VB.NET开发环境)
最近由于工作的原因,对EXCEL文件的读取和输出的开发做了不少。积累了不少关于EXCEL文件操作的代码,现在和大家分享一下。希望大家再遇到EXCEL文件相关的开发,会轻而易举的搞定。由于类的代码太多这里只粘贴一部分,如果想得到最多的代码请参照冰凝制作室。这里所示的代码是类的一些常量、变量、COM释放和变量释放的定义。
Implements IDisposable
#Region "常量"
'窗口样式
Private Const mCsDialogTitle As String = "Excel文件名输入"
'文件类型设定
Private Const mCsDialogFilter As String = "Microsoft Office Excel|*.xls"
'文件名禁止使用字符
Public Const mCsFILE_NM_WRONG As String = "\/:,;*?<>|""" & Microsoft.VisualBasic.ControlChars.Tab
'Sheet禁止使用字符
Public Const mCsSHEET_NM_WRONG As String = ":\/?*[]:/?*"
'Excel单元格格式
Public Enum XLS_FMT As Integer
FMT_NORMAL '通常
FMT_NUMBER '值
FMT_STRING '文字列
FMT_DATE '日期
FMT_DECIMAL '小数点以下
FMT_DIGITONE '小数点后一位
FMT_DIGITTWO '小数点后二位
FMT_DIGITTHR '小数点后三位
End Enum
'Excel单元格表示位置
Public Enum XLS_POS As Integer
POS_NORMAL = 0 '未设定
POS_LEFT = 1 '居左
POS_CENTER = 2 '居中
POS_RIGHT = 3 '居右
End Enum
'Excel作成返回值
Public Enum XLS_RESULT As Integer
XLS_NO_SHT = -3 '没有Sheet
XLS_PR_NG = -2 '印刷异常
XLS_NG = -1 '异常
XLS_OK = 0 '正常结束
XLS_CANCEL = 1 '取消
End Enum
#End Region
#Region "变量"
Private oExcel As Excel.Application 'Excel应用程序
Private oWorkBooks As Excel.Workbooks 'Workbooks对象
Private oWorkBook As Excel.Workbook 'Workbook对象
Private oSheets As Excel.Sheets 'Sheets对象
Private oSheet As Excel.Worksheet 'Sheet对象
Private oSheetYobi1 As Excel.Worksheet 'Sheet对象(预备1)
Private oSheetYobi2 As Excel.Worksheet 'Sheet对象(预备2)
Private oRange As Excel.Range 'Range对象
Private oRangeYobi1 As Excel.Range 'Range对象(预备1)
Private oRangeYobi2 As Excel.Range 'Range对象(预备2)
Private oBorders As Excel.Borders 'Borders对象
Private oBorder As Excel.Border 'Border对象
Private oInterior As Excel.Interior 'Interior对象
Private oFont As Excel.Font 'Font对象
Private oPageSetup As Excel.PageSetup 'PageSetup对象
Private oWindow As Excel.Window 'Window对象
Private oShapes As Excel.Shapes 'Shapes对象
Private oShape As Excel.Shape 'Shape对象
Private msFileNm As String = "" 'Excel文件名
Private miSheetNo As Integer 'Sheet号码
#End Region
#Region "EXCEL列坐标的英文取得"
''' <summary>
''' EXCEL列坐标的英文取得
''' </summary>
''' <param name="iPos"></param>
''' <returns></returns>
''' <remarks>DataGrid列号码变换为A或AB等坐标</remarks>
Public Function GetXlsRange(ByVal iPos As Integer) As String
Dim sRet As String
Dim iWork As Integer
Dim iMod As Integer
sRet = ""
iWork = iPos \ 26
iMod = iPos Mod 26
If iPos <= 26 Then
sRet = Chr(Asc("A") + iPos - 1)
Else
If iMod = 0 Then
sRet = Chr(Asc("A") + iWork - 2) & "Z"
Else
sRet = Chr(Asc("A") + iWork - 1) & Chr(Asc("A") + iMod - 1)
End If
End If
Return sRet
End Function
#End Region
#Region "Excel变量释放"
''' <summary>
''' Excel变量释放
''' </summary>
''' <remarks></remarks>
Private Sub XlsFileRelease()
Call MRComObject(oWindow)
Call MRComObject(oFont)
Call MRComObject(oInterior)
Call MRComObject(oBorder)
Call MRComObject(oBorders)
Call MRComObject(oPageSetup)
Call MRComObject(oRangeYobi2)
Call MRComObject(oRangeYobi1)
Call MRComObject(oRange)
Call MRComObject(oSheetYobi1)
Call MRComObject(oSheetYobi2)
Call MRComObject(oSheet)
Call MRComObject(oSheets)
Try
If Not oWorkBook Is Nothing Then
oWorkBook.Close()
End If
Catch ex As Exception
'Com对象释放、处理继续
End Try
Call MRComObject(oWorkBook)
Call MRComObject(oWorkBooks)
Try
If Not oExcel Is Nothing Then
oExcel.Quit()
End If
Catch ex As Exception
'Com对象释放、处理继续
End Try
Call MRComObject(oExcel)
Return
End Sub
#End Region
#Region "COM对象释放"
''' <summary>
''' COM对象释放(Excel.Application)
''' </summary>
''' <param name="objCOM"></param>
''' <remarks></remarks>
Private Sub MRComObject(ByRef objCOM As Excel.Application)
Try
If Not objCOM Is Nothing Then
System.Runtime.InteropServices.Marshal.ReleaseComObject(objCOM)
End If
Catch ex As Exception
Finally
objCOM = Nothing
End Try
End Sub
''' <summary>
''' COM对象释放(Excel.Workbooks)
''' </summary>
''' <param name="objCOM"></param>
''' <remarks></remarks>
Private Sub MRComObject(ByRef objCOM As Excel.Application)
Try
If Not objCOM Is Nothing Then
System.Runtime.InteropServices.Marshal.ReleaseComObject(objCOM)
End If
Catch ex As Exception
Finally
objCOM = Nothing
End Try
End Sub
''' <summary>
''' COM对象释放(Excel.Workbook)
''' </summary>
''' <param name="objCOM"></param>
''' <remarks></remarks>
Private Sub MRComObject(ByRef objCOM As Excel.Application)
Try
If Not objCOM Is Nothing Then
System.Runtime.InteropServices.Marshal.ReleaseComObject(objCOM)
End If
Catch ex As Exception
Finally
objCOM = Nothing
End Try
End Sub
''' <summary>
''' COM对象释放(Excel.Worksheets)
''' </summary>
''' <param name="objCOM"></param>
''' <remarks></remarks>
Private Sub MRComObject(ByRef objCOM As Excel.Application)
Try
If Not objCOM Is Nothing Then
System.Runtime.InteropServices.Marshal.ReleaseComObject(objCOM)
End If
Catch ex As Exception
Finally
objCOM = Nothing
End Try
End Sub
''' <summary>
''' COM对象释放(Excel.Worksheet)
''' </summary>
''' <param name="objCOM"></param>
''' <remarks></remarks>
Private Sub MRComObject(ByRef objCOM As Excel.Application)
Try
If Not objCOM Is Nothing Then
System.Runtime.InteropServices.Marshal.ReleaseComObject(objCOM)
End If
Catch ex As Exception
Finally
objCOM = Nothing
End Try
End Sub
''' <summary>
''' COM对象释放(Excel.Range)
''' </summary>
''' <param name="objCOM"></param>
''' <remarks></remarks>
Private Sub MRComObject(ByRef objCOM As Excel.Application)
Try
If Not objCOM Is Nothing Then
System.Runtime.InteropServices.Marshal.ReleaseComObject(objCOM)
End If
Catch ex As Exception
Finally
objCOM = Nothing
End Try
End Sub
''' <summary>
''' COM对象释放(Excel.Borders)
''' </summary>
''' <param name="objCOM"></param>
''' <remarks></remarks>
Private Sub MRComObject(ByRef objCOM As Excel.Application)
Try
If Not objCOM Is Nothing Then
System.Runtime.InteropServices.Marshal.ReleaseComObject(objCOM)
End If
Catch ex As Exception
Finally
objCOM = Nothing
End Try
End Sub
''' <summary>
''' COM对象释放(Excel.Border)
''' </summary>
''' <param name="objCOM"></param>
''' <remarks></remarks>
Private Sub MRComObject(ByRef objCOM As Excel.Application)
Try
If Not objCOM Is Nothing Then
System.Runtime.InteropServices.Marshal.ReleaseComObject(objCOM)
End If
Catch ex As Exception
Finally
objCOM = Nothing
End Try
End Sub
''' <summary>
''' COM对象释放(Excel.Interior)
''' </summary>
''' <param name="objCOM"></param>
''' <remarks></remarks>
Private Sub MRComObject(ByRef objCOM As Excel.Application)
Try
If Not objCOM Is Nothing Then
System.Runtime.InteropServices.Marshal.ReleaseComObject(objCOM)
End If
Catch ex As Exception
Finally
objCOM = Nothing
End Try
End Sub
''' <summary>
''' COM对象释放(Excel.Font)
''' </summary>
''' <param name="objCOM"></param>
''' <remarks></remarks>
Private Sub MRComObject(ByRef objCOM As Excel.Application)
Try
If Not objCOM Is Nothing Then
System.Runtime.InteropServices.Marshal.ReleaseComObject(objCOM)
End If
Catch ex As Exception
Finally
objCOM = Nothing
End Try
End Sub
''' <summary>
''' COM对象释放(Excel.PageSetup)
''' </summary>
''' <param name="objCOM"></param>
''' <remarks></remarks>
Private Sub MRComObject(ByRef objCOM As Excel.Application)
Try
If Not objCOM Is Nothing Then
System.Runtime.InteropServices.Marshal.ReleaseComObject(objCOM)
End If
Catch ex As Exception
Finally
objCOM = Nothing
End Try
End Sub
''' <summary>
''' COM对象释放(Excel.Window)
''' </summary>
''' <param name="objCOM"></param>
''' <remarks></remarks>
Private Sub MRComObject(ByRef objCOM As Excel.Application)
Try
If Not objCOM Is Nothing Then
System.Runtime.InteropServices.Marshal.ReleaseComObject(objCOM)
End If
Catch ex As Exception
Finally
objCOM = Nothing
End Try
End Sub
''' <summary>
''' COM对象释放(Excel.Shapes)
''' </summary>
''' <param name="objCOM"></param>
''' <remarks></remarks>
Private Sub MRComObject(ByRef objCOM As Excel.Application)
Try
If Not objCOM Is Nothing Then
System.Runtime.InteropServices.Marshal.ReleaseComObject(objCOM)
End If
Catch ex As Exception
Finally
objCOM = Nothing
End Try
End Sub
''' <summary>
''' COM对象释放(Excel.Shape)
''' </summary>
''' <param name="objCOM"></param>
''' <remarks></remarks>
Private Sub MRComObject(ByRef objCOM As Excel.Application)
Try
If Not objCOM Is Nothing Then
System.Runtime.InteropServices.Marshal.ReleaseComObject(objCOM)
End If
Catch ex As Exception
Finally
objCOM = Nothing
End Try
End Sub
#End Region
#Region "Dispose资源释放"
Private disposedValue As Boolean = False
' IDisposable
Protected Overridable Sub Dispose(ByVal disposing As Boolean)
If Not Me.disposedValue Then
If disposing Then
Me.XlsFileRelease()
End If
End If
Me.disposedValue = True
End Sub
Public Sub Dispose() Implements IDisposable.Dispose
Dispose(True)
GC.SuppressFinalize(Me)
End Sub
#End Region
浙公网安备 33010602011771号