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)
当我尝试 运行 更新 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)