gpt4 book ai didi

c# - EPPlus:我如何拥有 2 个 ExcelPackage.SaveAs?

转载 作者:太空宇宙 更新时间:2023-11-03 23:27:57 25 4
gpt4 key购买 nike

我正在使用 EPPlus 导出到 Excel 功能。我需要 2 个 SaveAs,第一个 SaveAs 是一个允许用户打开/保存/SaveAs 的保存对话框,我的第二个 SaveAs 允许将 Excel 文件作为备份副本直接保存到服务器中的指定文件夹中。

因此我的问题是我的第二个另存为不起作用(调试期间没有错误弹出窗口,也没有为第二个另存为生成文件)。

请指教。谢谢!

ExcelPackage package = new ExcelPackage();
.....
code for loading data table
.....
var filename = @"REPORT_" + datetime.ToString("dd-MM-yyyy_hh-mm-ss") + ".xlsx";

以下代码有效(我的第一个 SaveAs 供用户选择打开/保存/另存为):

Response.Clear();
package.SaveAs(Response.OutputStream);
Response.AddHeader("content-disposition", "attachment; filename=" + filename + ";");
Response.Charset = "";
Response.ContentType = "application/vnd.xlsx";
Response.End();

下面的代码不起作用(我的第二个 SaveAs 将文件直接保存到服务器):

string path = @"C:\Users\testacc\Desktop\Test\" + filename +";";
Stream stream = File.Create(path);
package.SaveAs(stream);
stream.Close();
byte[] data = File.ReadAllBytes(path);

最佳答案

为什么不看看它并以相反的顺序实现另一种方式。先将生成的文件保存在服务器上,然后将保存的文件传输给客户端。

  1. 创建包

    ExcelPackage package = new ExcelPackage();
    .....
    code for loading data table
    .....
    var filename = @"REPORT_" + datetime.ToString("dd-MM-yyyy_hh-mm-ss") + ".xlsx";
  2. 保存到服务器

    string path = @"C:\Users\testacc\Desktop\Test\" + filename +";";
    Stream stream = File.Create(path);
    package.SaveAs(stream);
    stream.Close();
  3. 将保存的文件传输给客户端

    try {
    response.Clear();
    response.ContentType = "application/vnd.xlsx";
    response.AddHeader("content-disposition", "attachment; filename=" + filename + ";");
    response.TransmitFile(path);
    response.Flush();
    } catch (Exception ex) {
    // any error handling mechanism
    } finally {
    HttpContext.Current.ApplicationInstance.CompleteRequest();
    }

关于c# - EPPlus:我如何拥有 2 个 ExcelPackage.SaveAs?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33236746/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com