2013-03-19 85 views
1

我收到提示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); 

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

要跟踪抽样误差图像

enter image description here

+0

为你睡线程什么?为什么你释放com对象两次? – abatishchev 2013-03-19 06:09:12

+0

@abatishchev:请检查我的帖子。 – user2144293 2013-03-19 06:13:53

+0

你的空白catch块会吞下任何异常,并且很难弄清楚发生了什么问题!你可以在你的服务器上调试吗? – JMK 2013-03-19 14:01:09

回答

2

它不是很好的做法,使用办公自动化服务器上​​,你可以考虑替代像epplus。

对于您的问题office 2003需要Microsoft.Office.Excel版本11和Office 2010将需要版本14。我想在你的项目,你会增加14版,因此它有2010字的工作,但并没有与办公室工作在服务器2003

尝试后期绑定http://support.microsoft.com/kb/302902,是否能解决您的prpoblem,就当iterop发出

+1

我已经在我的开发机器上将应用程序部署到了我的开发计算机上运行2007之前没有问题,我怀疑这是因为OP正在尝试做一些工作在2010年,但不是在2003年,但空的catch块使它不可能看到发生了什么问题! – JMK 2013-03-19 14:04:16

+0

您在项目中引用的互操作性版本是什么? – 2013-03-19 14:07:06

+1

我不是OP,我只是一个评论者的驱动器,你会更好地指导你的问题@ user2144293 – JMK 2013-03-19 14:08:08

0

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

编辑:

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

EFE:谢谢你的回答,但我的问题是它可以节省它,但机智的宏。为什么这样?我不想让宏可用 – user2144293 2013-03-20 12:50:05

0

它当IIS运行 我有这个问题,我解决它以这种方式

我的文件夹

Ç就权限问题:\ WINDOWS \ system32 \设置\ SystemProfile

C:\ WINDOWS \ Syswow64资料\的conf ig \ SystemProfile

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

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

此时一切都解决了,如果你仍然有问题,尽量给所有的权限“所有人”

相关问题