我有必须以字节数组形式加载到excel文件中的数据,我需要对此应用密码保护。 我曾尝试将byte []转换为数据表/列表,并尝试使用Excelpackage应用密码保护,但是我无法正确将byte []数组中的数据转换为任何形式。我的文件正在下载但包含一些奇怪的数据。任何人都可以分享您的知识吗?
response.Clear();
response.Buffer = true;
response.ContentEncoding = System.Text.Encoding.UTF8;
response.ContentType = mimeType;
response.AddHeader("content-disposition", "attachment;filename="
+ Uri.EscapeDataString(fileName));
response.Charset = "";
response.Cache.SetCacheability(HttpCacheability.NoCache);
DataTable dt;
MemoryStream stream;
using (stream = new MemoryStream(fileBytes))
{
BinaryFormatter bin = new BinaryFormatter();
stream.Seek(0, SeekOrigin.Begin);
dt = (DataTable)formatter.Deserialize(stream);
stream.Close();
}
using (ExcelPackage pack = new ExcelPackage())
{
ExcelWorksheet ws = pack.Workbook.Worksheets.Add("heelo");
ws.Cells["A1"].LoadFromDataTable(dt, true);
pack.Save("123");
var ms = new System.IO.MemoryStream();
pack.SaveAs(ms);
ms.WriteTo(HttpContext.Current.Response.OutputStream);
ms.Close();
}
response.Flush();
response.End();
答案 0 :(得分:0)
在编写代码时遇到一些麻烦。为什么response
mime键入PDF?我想你会希望成为这样的
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
response
实际上与MemoryStream
有任何关系,因为我没有看到彼此之间的引用吗?
无论如何,如果您有ExcelPackage
可用并且想用密码写到Stream
,则可以调用重载:
pack.SaveAs(ms, "MyPassword")