C# 生成excel时报错,异常来自:HRESULT:0x80028018(TYPE_E_INVDAIAREAD)

在使用C#生成Excel文件时遇到异常,错误信息为HRESULT:0x80028018(TYPE_E INVDAIAREAD)。解决方案是在执行垃圾回收后恢复线程的CurrentCulture设置。


当用C#开发Excel报表时,出现“Method:Microsoft.Office.Interop.Excel.WorkbookAdd(System.Object) Message:Old format or invalid type library.(Exception from HRESULT: 0x80028018 (TYPE_E_INVDATAREAD))Data:System.Collections.ListDictionaryInternal”问题!

 

解决方案:

 

1,这是Excel自身的一个bug,当本地系统环境被设置成非英文的,而Excel是英文的时候,就会出现,需要临时设定英文环境,代码如下:
   System.Globalization.CultureInfo CurrentCI =System.Threading.Thread.CurrentThread.CurrentCulture;
   System.Threading.Thread.CurrentThread.CurrentCulture = newSystem.Globalization.CultureInfo("en-US");


在执行垃圾回收后加上(还原以前的设置)

System.Threading.Thread.CurrentThread.CurrentCulture =oldCI;

或者

 

2,或到“区域与语言选项中”设定当前的区域选项为当前系统的环境




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值