异常“通过安全透明方法'NPOI.OpenXml4Net.OPC.ZipPackage尝试”

时间:2018-08-29 07:21:43

标签: c# npoi

我正在尝试使用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)'失败。

2 个答案:

答案 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依赖关系再次正常运行。是的。