vb.net office excel 和wps共存 后期绑定 无需引用,创建正确的excel对象以便操作excel表格

14 篇文章 2 订阅
14 篇文章 0 订阅

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

 

异常处理

 

另外,有时候操作excel会提示 “类 Workbook 的 SaveAs 方法无效”错误。

这个错误通常是电脑同时安装了低版本office excel(如2003)和高版本wps(如最新版2016)导致的。

如果你用保存的代码是

        If xlApp.Version > 11# Then
            xlBook.SaveAs xlsFileName, 51
        ElseIf xlApp.Version <= 11# Then
            xlBook.SaveAs xlsFileName, 56
        End If

请改成,系统会自动帮你保存文件为当前所用 Excel 版本的格式

        If xlApp.Version > 11# Then
            xlsFileName = xlsFileName & ".xlsx"
        ElseIf xlApp.Version <= 11# Then
            xlsFileName = xlsFileName & ".xls"
        End If

        xlBook.SaveAs(xlsFileName)

 

 

参考

Worksheet.SaveAs 方法 详细用法请看

https://msdn.microsoft.com/zh-cn/library/ff195820(v=office.15).aspx

 

 

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

闪星2

Time is money

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值