使用 Excel 应用程序打开 ExcelPackage 对象,而不将其保存在本地文件路径上

本文关键字:存在 保存 路径 文件 应用程序 Excel ExcelPackage 对象 使用 | 更新日期: 2023-09-27 18:33:19

我有一个包含一些信息的文本文件,我使用 EPPlus 将其转换为 ExcelPackage 对象,现在我想知道是否有办法使用 excel 打开此对象而无需将其保存到本地文件? 如果不可能,我可以使用临时目录将其保存到文件中, 然后打开它?

使用 Excel 应用程序打开 ExcelPackage 对象,而不将其保存在本地文件路径上

如果您正在谈论Windows应用程序,则可以使用类似System.IO.Path.GetTempPath()。 您可以从这里获取更多信息:

如何获取当前用户的临时文件夹

所以,像这样:

[TestMethod]
public void TempFolderTest()
{
    var path = Path.Combine(Path.GetTempPath(), "temp.xlsx");
    var tempfile = new FileInfo(path);
    if (tempfile.Exists)
        tempfile.Delete();
    //Save the file
    using (var pck = new ExcelPackage(tempfile))
    {
        var ws = pck.Workbook.Worksheets.Add("Demo");
        ws.Cells[1, 2].Value = "Excel Test";
        pck.Save();
    }
    //open the file
    Process.Start(tempfile.FullName);
}

如果你在谈论网络,你不需要保存它,只需通过响应发送:

using (ExcelPackage pck = new ExcelPackage())
{
    var ws = pck.Workbook.Worksheets.Add("Demo");
    ws.Cells[1, 2].Value = "Excel Test";
    var fileBytes = pck.GetAsByteArray();
    Response.Clear();
    Response.AppendHeader("Content-Length", fileBytes.Length.ToString());
    Response.AppendHeader("Content-Disposition",
        String.Format("attachment; filename='"{0}'"; size={1}; creation-date={2}; modification-date={2}; read-date={2}"
            , "temp.xlsx"
            , fileBytes.Length
            , DateTime.Now.ToString("R"))
        );
    Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
    Response.BinaryWrite(fileBytes);
    Response.End();
}