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

时间:2013-03-19 06:02:36

标签: c# excel com vsto

我收到错误

  

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);   

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

示例关注错误图片

enter image description here

3 个答案:

答案 0 :(得分:2)

在服务器上使用办公自动化是不好的做法,您可以考虑像epplus这样的替代方案。

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

尝试延迟绑定http://support.microsoft.com/kb/302902,如果这解决了你的问题,请将其视为iterop问题

答案 1 :(得分:0)

你可以使用我写的belov代码。我试过另一个项目。它正在运作

编辑:

可能导致错误的原因是您的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();  

答案 2 :(得分:0)

IIS正在运行时出现权限问题 我有这个问题,我以这种方式解决了它

我去了文件夹

C:\ Windows \ System32 \ config \ SystemProfile

<强> C:\的Windows \ Syswow64资料\配置\ SystemProfile

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

右键单击 - &GT;卡安全 - &gt;点击编辑 - &gt;添加未经考虑的&#34; Autenticadet用户&#34;并分配权限。

此时一切都已解决,如果您仍有问题,请尝试将所有权限授予&#34;每个人&#34;