1

我收到错误

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

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

示例跟随错误图片

在此处输入图像描述

4

3 回答 3

2

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

对于您的问题 office 2003 需要 Microsoft.Office.Excel 版本 11 和 office 2010 需要版本 14 。我猜在您的项目中您会添加版本 14,因此它适用于 word 2010,但不适用于带有 office 2003 的服务器

尝试后期绑定http://support.microsoft.com/kb/302902,如果这解决了您的问题,请将其视为迭代问题

于 2013-03-19T13:53:55.533 回答
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();  
于 2013-03-19T14:15:33.047 回答
0

这是IIS运行时的权限问题我遇到了这个问题,我以这种方式解决了它

我继续文件夹

C:\Windows\System32\config\SystemProfile

C:\Windows\SysWOW64\config\SystemProfile

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

右键单击-> 卡安全-> 单击编辑-> 添加 untente “Autenticadet 用户”并分配权限。

至此一切都解决了,如果您仍然有问题,请尝试将所有权限授予“所有人”

于 2014-10-24T07:29:18.583 回答