【问题标题】:Excel crash after opening it into vb.net using introp使用互操作将其打开到 vb.net 后 Excel 崩溃
【发布时间】:2020-06-15 19:31:14
【问题描述】:

使用 introp 将 Excel 打开到 vb.net 后崩溃

Followig 是我用于从 excel 导入数据的代码

    Dim misValue As System.Reflection.Missing
    Dim tbl As New System.Data.DataTable
    Dim xlApp As nExcel.Application
    Dim xlWorkBook As nExcel.Workbook
    Dim xlWorkSheet As nExcel.Worksheet

    xlApp = New nExcel.Application
    Try
        xlWorkbook = xlApp.Workbooks.Open(sFilePath)


        Dim issheetext As Boolean
        Dim sheet As nExcel.Worksheet
        For Each sheet In xlWorkbook.Sheets
            If sheet.Name.Equals(sSheetname) Then
                issheetext = True
                Exit For
            End If
        Next
        If issheetext Then
            xlWorkSheet = DirectCast(xlWorkbook.Sheets(sSheetname), nExcel.Worksheet)

            ' get range object
            Dim myRange As nExcel.Range = DirectCast(xlWorkSheet.get_Range("A1:BZ102451"), nExcel.Range)

            For i As Integer = 0 To myRange.Columns.Count
                Dim cellval As Object
                cellval = DirectCast(myRange.Cells(1, i + 1), Object)
                tbl.Columns.Add(cellval.ToString(), cellval.GetType())
            Next
            For i As Integer = 0 To myRange.Rows.Count - 2
                tbl.Rows.Add()

                For j As Integer = 0 To myRange.Columns.Count - 1
                    Dim CellValue As Object = DirectCast(myRange.Cells(2 + i, j + 1).Value2, Object)
                    tbl.Rows(i)(j) = CellValue
                Next
            Next
        End If
    Catch ex As Exception
    Finally
        Try
            releaseObject(xlWorkSheet)
            releaseObject(xlWorkbook)
            releaseObject(xlApp)
        Catch
        End Try


    End Try

    Return tbl

但是当调试器交叉xlWorkbook = xlApp.Workbooks.Open(sFilePath)

它告诉我

在异常情况下它显示给我

远程过程调用失败。 (HRESULT 异常:0x800706BE)

提前致谢

【问题讨论】:

  • 什么是 nExcel?
  • 它是 introp 对象的名称,如 import nExcel=Microsoft.office.introp.excel
  • 如何让应用在打开前可见,看看是否有错误?
  • 你能解释一下如何

标签: excel vb.net


【解决方案1】:

基于您的代码的几件事我相信您的代码是正确的:

  • 请验证文件路径sFilePath
  • 阻止 Excel 启动的任何后台弹出窗口
  • 从任务管理器中杀死所有 excel 并重新启动计算机
  • 在 Window Run 中输入 Excel -r 并按 Enter 键(它将 Excel 重置为默认值)

【讨论】:

    猜你喜欢
    • 2014-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-25
    • 2014-01-12
    • 1970-01-01
    相关资源
    最近更新 更多