When running script in SSIS to modify a excel file get error :The server threw an exception. (Exception from HRESULT: 0x80010105 (RPC_E_SERVERFAULT))

When running script in SSIS to modify a excel file get error :The server threw an exception. (Exception from HRESULT: 0x80010105 (RPC_E_SERVERFAULT))

当我尝试 运行 更新 SSIS 脚本来更新 excel 文件时,它总是在任何修改或保存读取文件时出错,这是在 Visual studio 2005 年完成的运行 在服务器上。

任何想法。

excel Interop 的版本是:Microsoft.Office.Interop.Excel - 11.0.0.0

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Microsoft.office.interop.excel.dll

脚本代码:

    Dim oExcel As Excel.Application
    Dim oWorkBook As Excel.Workbook
    Dim oWorkSheets As Excel.Sheets
    Dim oWSheet As Excel.Worksheet
    Dim oRng As Excel.Range
    Dim oCell As Excel.Range

    Dim Temp As String
    Dim startCol As String
    Dim startRow As Long
    Dim lastRow As Long
    Dim lastCol As Long
    Dim i As Long

    Dim myfile As String
    Dim myPath As String


    'SET oExcel As Excel.Application
    oExcel = CreateObject("Excel.Application")

    'DISABLE EXCEL WARNINGS
    oExcel.Visible = False
    oExcel.DisplayAlerts = False
    oExcel.AskToUpdateLinks = False
    oExcel.AlertBeforeOverwriting = False

    myPath = "\Network Path\Testing\"
    myfile = "EIV Temp File - Small.xls"

    oWorkBook = oExcel.Workbooks.Open(myPath & myfile)

    With oWorkbook
        oWSheet = CType(oWorkBook.Sheets(1), Excel.Worksheet)

        startCol = "A"
        startRow = 1
        lastRow = oWSheet.Range(startCol & oWSheet.Rows.Count).End(XlDirection.xlUp).Row
        lastCol = oWSheet.Cells(2, oWSheet.Columns.Count).End(XlDirection.xlToLeft).Column + 1

        '  oRng = oWSheet.Range("I2" & ":" & "I" & lastRow)

        ' For Each oCell In oRng
        ' Temp = "'" + oCell.Value
        ' oCell.Value = Temp
        ' Next oCell

        Try
            With oWSheet
                For i = 2 To lastRow
                    Temp = "'" + .Cells(i, 9).value
                    .Cells(i, lastCol).value = Temp ' Errors at this line
                Next i
            End With
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try

        .Save() ' Errors at this line
        .Close(SaveChanges:=False)
    End With

异常

Exception from HRESULT: 0x80010105 (RPC_E_SERVERFAULT)

我试过你的代码,下面一行抛出异常:

Temp = "'" + .Cells(i, 9).value

因为您使用 + 运算符连接字符串,而如果单元格的值不是字符串,则会抛出异常。试试下面的语法。

Temp = "'" & .Cells(i, 9).value

您也可以删除 .Save 行并使用 .Close(SaveChanges:=True)

旁注:

脚本执行后excel会在后台保持打开状态,需要添加如下几行:

Marshal.ReleaseComObject(owsheet)
Marshal.ReleaseComObject(oWorkbook)
Marshal.ReleaseComObject(oExcel)