Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Could not load file or assembly ICSharpCode.SharpZipLib... When using nuGet package ExcelDataReader

Error:

Could not load file or assembly 'ICSharpCode.SharpZipLib, Version=0.85.5.452, Culture=neutral, PublicKeyToken=1b03e6acf1164f73' or one of its dependencies. The system cannot find the file specified.`

Stack:

[FileNotFoundException: Could not load file or assembly 'ICSharpCode.SharpZipLib, Version=0.85.5.452, Culture=neutral, PublicKeyToken=1b03e6acf1164f73' or one of its dependencies. The system cannot find the file specified.]
Excel.Core.ZipWorker.Extract(Stream fileStream) +0
Excel.ExcelOpenXmlReader.Initialize(Stream fileStream) +78

[Asp.Net Mvc3 C#]

Using the NuGet Package ExcelDataReader I tried to simply open up a .xlsx file saved on the filesystem. Here is the code used:

string filePath = HttpContext.Server.MapPath("~/blank3.xlsx");
FileStream stream = System.IO.File.Open(filePath, FileMode.Open, FileAccess.Read);
IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);

Here is the website for the nuget package: http://exceldatareader.codeplex.com/

What gives? This should work without a hitch.

like image 218
Travis J Avatar asked Mar 10 '12 01:03

Travis J


3 Answers

I ran into the same issue; to resolve, I found the appropriate strong-name assembly on their codeplex project.

Downloaded the source code from http://exceldatareader.codeplex.com, grabbed the assembly from their LIB directory and referenced it from my project.

Edit May 2021
Looks like the link referenced is going away shortly; it's probably best (and easier) to follow Oleg's instructions below.

like image 175
denvercoder9 Avatar answered Nov 11 '22 02:11

denvercoder9


If what you are getting is:

Could not load file or assembly 'ICSharpCode.SharpZipLib, Version=0.86.0.518, Culture=neutral, PublicKeyToken=1b03e6acf1164f73' or one of its dependencies. The system cannot find the file specified.

Then the solution is to download the latest (or choose the right version for your error) ICSharpCode.SharpZipLib.dll from the SharpZipLib website, and just place it in the folder where the ExcelDataReader's Excel.dll is located (no need to reference it).

like image 34
Oleg Grishko Avatar answered Nov 11 '22 02:11

Oleg Grishko


because the dll is .net version 2.0, your project is higher, if you install the package from nuget package manager, it will auto use runtime assembly binding, the web.config/app.config file should like this:

  <runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
  <dependentAssembly>
    <assemblyIdentity name="ICSharpCode.SharpZipLib" publicKeyToken="1b03e6acf1164f73" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-0.85.4.369" newVersion="0.85.4.369" />
  </dependentAssembly>
</assemblyBinding>

like image 3
george Avatar answered Nov 11 '22 00:11

george