System.Runtime.InteropServices.COMException(0x800A03EC)错误

我得到错误

System.Runtime.InteropServices.COMException(0x800A03EC)

对于我下面的C#代码,我试图在这里保存一个工作表,

但在本地环境中也是如此:Office 2010,Windows 2003

不在服务器上工作:Office 2003,Windows 2003

码:

wBook = xCel.Workbooks.Open(ExcelPath); wSheet = (Excel.Worksheet)wBook.Worksheets.get_Item(1); wSheet.Copy(Type.Missing, Type.Missing); wSheet = (Excel.Worksheet)wBook.Sheets[1]; wSheet.SaveAs(ExcelCopyPath); 

这里有什么问题? 保存时失败 在其他一些服务器,它将保存,但在macros中,我不想要的。

要跟踪错误图片

在这里输入图像说明

在服务器上使用办公自动化不太好,你可以考虑像epplus一样的select。

对于您的问题office 2003需要Microsoft.Office.Excel版本11和Office 2010将需要版本14。 我想在你的项目中,你会添加14版本,因此它使用word 2010,但没有与office 2003的服务器上工作

尝试后期绑定http://support.microsoft.com/kb/302902 ,如果这解决了你的问题,算作iterop问题

这是IIS运行时的权限问题我有这个问题,我用这种方法解决了这个问题

我继续文件夹

C:\ Windows \ System32 \ config \ SystemProfile

C:\ WINDOWS \ Syswow64资料\设置\ SystemProfile

是受保护的系统文件夹,他们通常有锁。

右键单击 – >卡安全性 – >点击编辑 – >添加caching“Autenticadet用户”并分配权限。

在这一点上一切都解决了,如果你仍然有问题尝试给所有的权限,“大家”

你可以使用我写的代码。 我尝试了另一个项目。 它正在工作

编辑:

可能是你的错误的原因是你的Excel版本是不同于你在代码中使用的。

 Microsoft.Office.Interop.Excel.Application xlApp; Microsoft.Office.Interop.Excel.Workbook xlWorkBook; Microsoft.Office.Interop.Excel.Worksheet xlWorkSheet; object misValue = System.Reflection.Missing.Value; xlApp = new Microsoft.Office.Interop.Excel.Application(); xlWorkBook = xlApp.Workbooks.Add(misValue); xlWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1); xlWorkSheet.Cells[1, 1] = "xxx"; xlWorkSheet.Cells[2, 1] = "yyy"; xlWorkSheet.get_Range("A1", "A7").Borders.Weight = 2; xlWorkSheet.get_Range("A1", "A7").Font.Bold = true; xlWorkSheet.get_Range("A1", "A7").Font.Size = 13; xlWorkSheet.get_Range("A2", "A7").Borders.Weight = 2; xlWorkSheet.get_Range("A2", "A7").Font.Bold = true; xlWorkSheet.get_Range("A2", "A7").Font.Size = 13; xlWorkSheet.get_Range("A1", "B9").ColumnWidth = 25; xlWorkBook.SaveAs(System.Windows.Forms.Application.StartupPath + "\\exceller\\6 Nolu sosyal ve kültürel faaliyetler\\" + txtFaaliyetAdi.Text + ".xls", Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue , misValue, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue); xlWorkBook.Close(true, misValue, misValue); xlApp.Quit();