0

我有必须加载到字节数组中的 excel 文件的数据,我需要对其应用密码保护。我已尝试将 byte[] 转换为 datatable/list 并尝试使用 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();
4

1 回答 1

0

跟随你的代码有点麻烦。为什么responseMIME 类型是 PDF?我想你会希望那是

application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

response实际上与 s 有什么关系,因为MemoryStream我没有看到从一个到另一个的引用?

无论如何,如果你有ExcelPackage可用的并且你想Stream用密码写信,你可以调用重载:

pack.SaveAs(ms, "MyPassword")

以下是更多信息:使用 EPPLUS 下载受密码保护的 Excel

于 2019-03-08T23:48:07.297 回答