vb.net office excel 和wps共存,创建正确的excel对象以便操作excel表格

来源:互联网 发布:矩阵分析 编辑:程序博客网 时间:2024/03/29 14:45

vb6.0版代码请看vb6.0分类下另外一篇文章


代码实现平台:

vs2015+4.0 运行库

Log函数为自编函数,代码为给出,请谅解。

    ''' <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




1 0