首先说明,我这是最新的原创文章,2020年3月27日,相信很多小伙伴遇到excel操作的项目,为了在没有安装office的机子里跑软件,用了npoi的方法,最后发现xls格式的可以成功导入,xlsx版本的excel就会报错(未能加载文件或程序集 ICSharpCode.SharpZipLib),像我一样下载了无数个npio的dll反复测试了无数遍,都没办法解决,都想用回oleb的方式了,网络上的回答也千奇百怪,各种办法都试过(包括修改.net版本号,重新替换dll,生成x86的exe),包括现在我要说的成功的例子,之前也是失败的,估计跟网络有关系,因为我是去nuget上下载的,下载半天提示失败,顺便说下我的vs是2013版本的。
回家后我又试了一下negut的方法如图所示,下载了大概2分钟,就成功了,安装后在引用里自动出现了这些dll,其他就没什么好说了,为了方便大家还是把当前例子写成一个demo节约大家的时间。
重要提示,我试着把成功后的的demo里的dll复制到之前的工程里,还是会报同样的错误,看来dll本身是没有问题的,我检查了下,成功的项目里还多了一个文件packages.config,估计是nuget下载后安装自动生成了,里面有dll的信息,这样看来之前的dll不是没有用,是缺少一个配置文件,所以不管怎么换dll都是报错,原因是没有在项目里跟dll做配对,所以直接复制来的npoi.dll都无法使用。
很奇怪吧,我也是第一次遇到,问题是解决了,但是以前引用其他的dll都没出过这样的问题是为什么呢,希望有大神来回答下。