我正在尝试使用NPOI从C#中的excel文件读取。下面是我用来初始化变量的代码片段。但是在初始化工作簿时,以下是我遇到的异常。
public class Excelhandler
{
public static XSSFWorkbook workbook;
public static FileStream fileStream;
static Excelhandler()
{
try
{
string pth = AppDomain.CurrentDomain.SetupInformation.ApplicationBase;
string actualPath = pth.Substring(0, pth.LastIndexOf("bin"));
string projectPath = new Uri(actualPath).LocalPath;
string path = projectPath + @"TestData\Data.xlsx";
//string path = ConfigurationManager.AppSettings["TestDataPath"];
fileStream = new FileStream(path, FileMode.Open, FileAccess.Read);
workbook = new XSSFWorkbook(fileStream);
}
同一段代码在其他C#项目中运行,但是突然不起作用。以下是我使用的版本:-
NPOI-2.3.0
SharpZipLib(NPOI依赖)-1.0.0
.Net Framework -4.5.2
异常-通过安全透明方法'NPOI.OpenXml4Net.OPC.ZipPackage..ctor(System.IO.Stream,NPOI.OpenXml4Net.OPC.PackageAccess)'尝试访问安全关键方法'ICSharpCode.SharpZipLib.Zip.ZipInputStream ..ctor(System.IO.Stream)'失败。
答案 0 :(得分:2)
我也遇到了VS2017,NPOI 2.3.0和SharpZipLib 1.0.0的问题。
感谢CrazyDev。
我没有解决在NuGet中将SharpZipLib的版本更改为0.86的问题。 经过测试,我发现它也应该删除App.config中的以下内容:
<assemblyIdentity name="ICSharpCode.SharpZipLib" publicKeyToken="1b03e6acf1164f73" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-1.0.0.999" newVersion="1.0.0.999"/>
因此,不仅将SharpZipLib的版本回滚到0.86,而且还修改了App.config。
答案 1 :(得分:1)
将SharpZipLib Nuget更新到1.0.0时,我的脸上出现同样的异常。如NPOI 2.3.0中所述,回滚到最低版本0.86.0,Nuget依赖关系再次正常运行。是的。