EPPlus Excel 文件无法使用密码

问题描述 投票:0回答:2

我正在使用 MVC 应用程序创建一个 Excel 文件。根据配置设置,该文件将生成需要密码或不需要密码的文件。我可以让文件生成完美的没有。但如果我实施密码,我会收到此错误:

Excel 无法打开文件 '',因为文件格式无效。验证文件未损坏并且文件扩展名与文件格式匹配。

如有任何帮助,我们将不胜感激。这是我的代码:

private void ViewExcelPackageFile(Dataset dtList, string filename)
{
    // 
    var contenttype = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";

    // generate password with another function if configuration requires a password

    Response.Clear();
    Response.ContentType = contenttype;
    Response.AddHeader("content-disposition", "attachment;filename=" + filename);

    Response.Cache.SetCacheability(HttpCacheability.NoCache);
    using (var stream = new MemoryStream())
    {
        using (ExcelPackage package = new ExcelPackage())
        {
            var workbook = package.Workbook;
            foreach (var data in dtList)
            {
                ExcelWorksheet ws = workbook.Worksheets.Add(data.TableName.Replace('/', ' '));
                ws.Cells["A1"].LoadFromDataTable(data, true);
            }


            if (password.Length > 0)
            {
                package.SaveAs(stream, password);
            }
            else
            {
                package.SaveAs(stream);
            }

            Response.BinaryWrite(stream.ToArray());
            Response.Flush();
            Response.End();
        }
    }
}

请纠正我做错的任何事情,但同样,如果我不应用密码,它就可以正常工作。蒂亚!

c# excel model-view-controller epplus
2个回答
0
投票

尝试以下方法

if (!string.IsNullOrEmpty(password))
{
    package.Encryption.Password = password;
}

然后不使用 MemoryStream,而是直接获取字节。

Response.BinaryWrite(package.GetAsByteArray());

0
投票

我今天遇到了同样的问题。我只是将EPPlus版本从4.1.1更新到4.5.3,问题就解决了。我希望它可以帮助某人,尽管这篇文章是很久以前的了。

© www.soinside.com 2019 - 2024. All rights reserved.