我正在使用 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();
}
}
}
请纠正我做错的任何事情,但同样,如果我不应用密码,它就可以正常工作。蒂亚!
尝试以下方法
if (!string.IsNullOrEmpty(password))
{
package.Encryption.Password = password;
}
然后不使用 MemoryStream,而是直接获取字节。
Response.BinaryWrite(package.GetAsByteArray());
我今天遇到了同样的问题。我只是将EPPlus版本从4.1.1更新到4.5.3,问题就解决了。我希望它可以帮助某人,尽管这篇文章是很久以前的了。