在Excel中使用interopServices C#的COMException

时间:2015-02-15 15:16:01

标签: c# excel comexception interopservices

我在一些机器上安装我的程序时面临一个非常烦人的问题,我已经开发了一个C#应用程序,一切顺利,我确实在其他机器上测试它没有问题,但是当我在客户机上安装它时发生以下问题:

  

System.Runtime.InteropServices.COMException(0x800A03EC):异常   来自HRESULT:0x800A03EC       在   System.RuntimeType.ForwardCallToInvokeMember   (String memberName,BindingFlags flags,Object target,Int32 [] aWrapperTypes,MessageData& msgData)      在Microsoft.Office.Interop.Excel.Range.set__Default(Object RowIndex,Object ColumnIndex,Object)       在SchoolMgmt.certificate_succession.sum_operation()

当程序与Excel,Office Microsoft(我试图安装另一个Office版本但没有成功)通信时。
我已经搜索了很多解决方案,但没有任何作用,因为它声称问题只是以下路径中的权限问题

  

C:\ Windows \ System32 \ config \ SystemProfile

为什么程序在我的测试机器上顺利运行并且成功运行,而不是在我的客户端上,这让我很疯狂!
有任何建议请。

2 个答案:

答案 0 :(得分:2)

经过数周和数周的搜索和挖掘地狱问题,我发现了它!
这只是区域设置的问题!!是的,我不知道为什么,但Microsoft Office只是这样,控制面板的区域设置应该是英语,而不是我接受不同用户阅读的任何其他语言。
因此,如果您想从C#应用程序中使用Microsoft Office,请确保您的区域设置是英语等等!

答案 1 :(得分:0)

我遇到了同样的问题,经过多次试验,我了解到某些安装版本的Excel(2013)已经设置了与Excel 2003的兼容性的选项(常规选项)。在这种情况下,新创建的文件只接受255列和65.535行。由于我的应用程序正在处理数千列,因此excel正在生成错误。 简单的解决方案是更改常规选项并将“保存的文件格式”设置为“ .xlsx ”而不是“.xls”