首页 新闻 会员 周边

C#导出EXCEL,只能在同源AppDomain中执行动态操作?

0
悬赏园豆:50 [已解决问题] 解决于 2015-02-05 13:53

如果是单独新建一个项目不会报错,但是在公司原有项目中新建一个模块,执行同样的代码就报错,网上查了好久也没找到解决办法,求大神们指点

错误:只能在同源AppDomain中执行动态操作

 

            Microsoft.Office.Interop.Excel.Application exAppl = new Microsoft.Office.Interop.Excel.Application();

            Microsoft.Office.Interop.Excel.Workbook wbb = exAppl.Workbooks.Add(Missing.Value);
            Microsoft.Office.Interop.Excel._Worksheet worksheet = wbb.Worksheets[1]; ///这句报的错
问题补充:

应该不是代码的问题,是项目工程的问题,但是我不知道问题出在哪,新建项目不报错,引用的也是同一个Microsoft.Office.Interop.Excel.dll 

ku:k的主页 ku:k | 初学一级 | 园豆:162
提问于:2015-02-02 09:34
< >
分享
最佳答案
1

“只能在同源AppDomain中执行动态操作”对应的英文错误是

dynamic operations can only be performed in homogenous appdomain

这个问题与安全策略有关,试试 Excel dynamic operations can only be performed in homogenous appdomain error 中提到的解决方法,在 app.config 中添加如下的设置试试:

<configuration>
   <runtime>
      <NetFx40_LegacySecurityPolicy enabled="true"/>
   </runtime>
</configuration>
收获园豆:50
dudu | 高人七级 |园豆:30994 | 2015-02-02 10:56

原来app.config中就有这个设置,但是我把这个设置删除就不报错了,不明白是什么原理

ku:k | 园豆:162 (初学一级) | 2015-02-02 12:06

@ku:k: 欲知详情,google 'NetFx40_LegacySecurityPolicy'

dudu | 园豆:30994 (高人七级) | 2015-02-02 12:17
其他回答(2)
0

好像是dll的问题,那个问题挺多的,推荐你看看NPOI,导出Excel和Word简单好用

天命辉煌 | 园豆:10 (初学一级) | 2015-02-02 10:57

有时间一定研究下,但是这个是以前的老项目,只能用Microsoft.Office.Interop.Excel.dll

支持(0) 反对(0) ku:k | 园豆:162 (初学一级) | 2015-02-02 11:04
0

啊欧~~!!跨应用程序集了.?

变量传递的问题吧.?跨应用程序集操作变量本身就会有变量丢失的各种问题....

只会造轮子 | 园豆:2274 (老鸟四级) | 2015-02-02 12:28

没有跨程序集,也没有变量传递,应该就是上面说的与安全策略有关

支持(0) 反对(0) ku:k | 园豆:162 (初学一级) | 2015-02-02 12:34
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册