毕业论文开发语言企业开发JAVA技术.NET技术WEB开发Linux/Unix数据库技术Windows平台移动平台嵌入式论文范文英语论文
您现在的位置: 毕业论文 >> net技术 >> 正文

“ICSharpCode.SharpZipLib, Version=0.86.0.518, Culture=neutral, PublicKeyToken=1b03e6acf1164f73

更新时间:2015-10-16:  来源:毕业论文

workbook = new XSSFWorkbook(sm);

我用的是NPOI的方式导入Excel2007,运行到这句代码时,就报以下错误:
未能加载文件或程序集“ICSharpCode.SharpZipLib, Version=0.86.0.518, Culture=neutral, PublicKeyToken=1b03e6acf1164f73”或它的某一个依赖项。找到的程序集清单定义与程序集引用不匹配。 (异常来自 HRESULT:0x80131040)

版本不一致
三步:
1、删除原有引用ICSharpCode.SharpZipLib
2、重新引用Version=0.86.0.518的ICSharpCode.SharpZipLib
3、重新编译项目

workbook = WorkbookFactory.Create(sm);//使用接口,自动识别excel2003/2007格式

现把解决方法总结一下:
1.开始时出现的错误:
未能加载文件或程序集“ICSharpCode.SharpZipLib, Version=0.86.0.518, Culture=neutral, PublicKeyToken=1b03e6acf1164f73”或它的某一个依赖项。找到的程序集清单定义与程序集引用不匹配。 (异常来自 HRESULT:0x80131040)
这个错误的确是由于引用的NPOI.dll版本不正确造成的,我在NPOI官网找到了最新版本的NPOI.dll,版本2.2.0.0。里面有dotnet2和dotnet4两种,每种都包含有5个dll文件,我将我的程序里原来引用的NPOI.dll移除,将dotnet4中的5个dll全部引用上,结果还是出现相同的错误,再移除,换成dotnet2中的5个dll,这次错误变成“EOF in header”了。
2.现在NPOI.dll版本已经没有问题了,出现“EOF in header”的错误是由于我采用的方法有问题,我当时的代码如下:
 IWorkbook workbook = null; try            {                 workbook = new HSSFWorkbook(sm);//2003             }             catch (Exception)             {                 workbook = new XSSFWorkbook(fm);//2007             }

原本是想在识别文件格式为2003失败时,就用catch将文件作为2007格式识别的,
可是依然运行到workbook = new XSSFWorkbook(fm);//2007这句就走不下去了,此时提示的错误就是
“EOF in header”。在网上试了很多方法,将sm的资源在catch中先进行释放并关闭的操作也试了,还是一样。
3.又换了种思路,直接将文件的路径传过来,代码如下:

 ISheet sheet = null; FileStream fs = null; try            {                 fs = new FileStream(path, FileMode.Open, FileAccess.Read);                 HSSFWorkbook wk = new HSSFWorkbook(sm);                 sheet = wk.GetSheet("Sheet1");             }             catch (Exception)             {                 fs = new FileStream(path, FileMode.Open, FileAccess.Read);                 XSSFWorkbook wk = new XSSFWorkbook(sm);                 sheet = wk.GetSheet("Sheet1");             }

到这里又遇到了新的问题,如何获取FileUpload在客户端的包括路径的文件全名。
最简单的方式就是:IE------工具------Internet选项------安全-----自定义级别------将文件上传到服务器时包含本地目录路径启用  ,然后就可以用fileupload.postfile.filename就可以获取路径了。
在IE下测试通过,2003和2007的文件都可以正常识别了。
4.换用360浏览器,又不行了,360浏览器还是获取不到文件的路径。
最后的解决办法,就是把上面的代码全部干掉。换成下面这句:

 IWorkbook workbook = null; workbook = WorkbookFactory.Create(sm);//使用接口,自动识别excel2003/2007格式

整个世界都干净了。
总结这个方法给有需要的人进行参考。

设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优尔论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。