代码实现平台:
vs2015+4.0运行库
''' <summary> '''office97 8.0 '''office2000 9.0 '''officeXP (2002) 10.0 '''office2003 11.0 '''office2007 12.0 '''office2010 14.0 '''根据系统安装的Excel(Excel或者wps)创建Excel对象 ''' 一定要先et 然后在ket 最后才是excel ''' 在系统中,office excel 比wps 表格具有优先级或者是注册表里面某项决定的 ''' </summary> ''' <param name="xlApp"></param> ''' <param name="ISAM">索引顺序访问方法</param> ''' <param name="filter">文件后缀</param> ''' <returns></returns> Private Function CreateExcelObject(ByRef xlApp As Object,ByRef ISAM As String,ByRef filter As String) As Boolean Dim xlappVersion As Double = 0.0 Dim funcResult As Boolean = False Try xlApp = CreateObject("ET.Application") Catch ex As Exception Debug.Print($"错误代码:{Err.Number}{Environment.NewLine}错误描述:{Err.Description}") Debug.Print($"问题描述:{Environment.NewLine}{ex.Message}{Environment.NewLine}具体信息:{Environment.NewLine}{ex.StackTrace}") Log($"问题描述:{Environment.NewLine}{ex.Message}{Environment.NewLine}具体信息:{Environment.NewLine}{ex.StackTrace}") End Try If xlApp Is Nothing Then Try xlApp = CreateObject("KET.Application") Catch ex As Exception Debug.Print($"错误代码:{Err.Number}{Environment.NewLine}错误描述:{Err.Description}") Debug.Print($"问题描述:{Environment.NewLine}{ex.Message}{Environment.NewLine}具体信息:{Environment.NewLine}{ex.StackTrace}") Log($"问题描述:{Environment.NewLine}{ex.Message}{Environment.NewLine}具体信息:{Environment.NewLine}{ex.StackTrace}") End Try End If If xlApp Is Nothing Then Try xlApp = CreateObject("Excel.Application") Catch ex As Exception Debug.Print($"错误代码:{Err.Number}{Environment.NewLine}错误描述:{Err.Description}") Debug.Print($"问题描述:{Environment.NewLine}{ex.Message}{Environment.NewLine}具体信息:{Environment.NewLine}{ex.StackTrace}") Log($"问题描述:{Environment.NewLine}{ex.Message}{Environment.NewLine}具体信息:{Environment.NewLine}{ex.StackTrace}") End Try End If If xlApp Is Nothing Then Debug.Print($"来源:{New StackTrace().GetFrame(0).GetMethod.Name} 获取Excel或者WPS对象失败") Return funcResult End If xlApp.Visible = False xlappVersion = Convert.ToDouble(xlApp.version) Select Case xlappVersion Case <= 11.0# filter = ".xls" ISAM = "Excel 8.0" funcResult = True Case > 11.0# filter = ".xlsx" ISAM = "Excel 12.0 Xml" funcResult = True Case Else Debug.Print($"来源:{New StackTrace().GetFrame(0).GetMethod.Name} 获取Excel或者WPS对象失败") End Select Debug.Print($"来源:{New StackTrace().GetFrame(0).GetMethod.Name} 获取Excel或者WPS对象成功") Return funcResult End Function
Dim xlApp As Object = Nothing Dim excelFilter As String = "" Dim excelISAM As String = ""
'后期绑定Excel对象 不需要知道系统安装的是哪个版本的Excel '不需要引用Excel If CreateExcelObject(xlApp,excelISAM,excelFilter) = False Then MessageBox.Show("本机未安装Excel或者WPS,导出失败!","温馨提示",MessageBoxButtons.OK,MessageBoxIcon.Information) Exit Sub End If