vb.net – excel – windows任务问题

我build立了一个将数据保存到excel的.net应用程序。 当我手动运行应用程序时,程序将数据表中的东西保存到excel中。 问题是,当我安排一个任务在我的Windows 10 PC上运行时,我得到了下面的错误。

:System.Runtime.InteropServices.COMException(0x800A03EC):从HRESULTexception:0x800A03EC在Microsoft.Office.Interop.Excel.WorkbookClass.SaveAs(对象文件名,对象FileFormat,对象密码,对象WriteResPassword,对象ReadOnlyRecommended,对象CreateBackup,XlSaveAsAccessMode AccessMode ,Object ConflictResolution,Object AddToMru,Object TextCodepage,Object TextVisualLayout,Object Local)

Public Shared Function CreateExcel() As Microsoft.Office.Interop.Excel.ApplicationClass For retry As Integer = 1 To 5 Try clsScrape.SendMail(" Return New Microsoft.Office.Interop.Excel.ApplicationClass") Return New Microsoft.Office.Interop.Excel.ApplicationClass Exit For Catch ex As Exception If ex.HResult <> &H80080005 Then Throw ex End Try Next Return Nothing End Function Public Shared Sub ExportExceltest(ByVal excel As Microsoft.Office.Interop.Excel.ApplicationClass) Try Dim dt As New DataTable dt.Columns.Add("ID") dt.Columns.Add("Name") Dim R As DataRow = dt.NewRow R("Name") = "MY Name" dt.Rows.Add(R) Dim strFile As String = "C:\Users\CodeMonger\Documents\Development\Test" & DateTime.Now.ToString("yyyy_MM_dd HH_mm_ss") & ".xlsx" ' Dim excel As New Microsoft.Office.Interop.Excel.ApplicationClass Dim wBook As Microsoft.Office.Interop.Excel.Workbook Dim wSheet As Microsoft.Office.Interop.Excel.Worksheet wBook = excel.Workbooks.Add() wSheet = wBook.ActiveSheet() Dim dc As System.Data.DataColumn Dim dr As System.Data.DataRow Dim colIndex As Integer = 0 Dim rowIndex As Integer = 0 For Each dc In dt.Columns colIndex = colIndex + 1 excel.Cells(1, colIndex) = dc.ColumnName Next For Each dr In dt.Rows rowIndex = rowIndex + 1 colIndex = 0 For Each dc In dt.Columns colIndex = colIndex + 1 excel.Cells(rowIndex + 1, colIndex) = dr(dc.ColumnName) Next Next clsScrape.SendMail("The datatable was built and this is Right before save") wSheet.Columns.AutoFit() wBook.SaveAs(strFile) wBook.Close() Catch ex As Exception clsScrape.SendMail("Here is the Issue :" & ex.ToString) End Try End Sub 

将Excel对象的构造代码移动到一个工厂子例程,这个例程被捕获时将执行重试

 Function CreateExcel() as Microsoft.Office.Interop.Excel.ApplicationClass For retry As Integer = 1 To 5 Try Return New Microsoft.Office.Interop.Excel.ApplicationClass Exit For Catch ex As Exception If ex.HResult <> &H80080005 Then Throw ex End Try Next Return Nothing End Function 

本文详细介绍了CO_E_SERVER_EXEC_FAILURE的问题:

此问题可能会出现在进程外的COM服务器时

  1. 该机器具有较高的CPU负载,并且该过程需要很长时间才能在120秒内启动并执行CoRegisterClassObjects()。

  2. COM服务器不注册正确的类ID。

  3. COM服务器当前正在停止并且CoCreateInstance和COM服务器停止部分之间存在争用条件。

  4. COM服务器启动方式存在一个安全问题(这个页面似乎暗示密码拼写错误,或者缺less“运行为…”COM服务器的“login为批处理作业”权限,但无论如何我build议重新validation信息为您的具体configuration)