【问题标题】:How to open created WorkBook with C# using memory, without saving it?如何使用内存使用 C# 打开创建的 WorkBook,而不保存它?
【发布时间】:2019-05-02 08:28:32
【问题描述】:

我正在使用 ClosedXML 创建一个 Excel 文件,我想打开创建的工作簿而不将其保存到服务器。那么有没有机会打开 ClosedXML 创建的 WorkBook 而无需将其保存在任何地方?我的猜测是使用内存,但你是怎么做的?

wb.SaveAs(filePath);      
System.Diagnostics.Process.Start(filePath);

我现在在保存的同时打开它,但是由于很少有人可以同时使用该程序并尝试获取 excel 文件,这会导致错误。那么有没有办法打开用 ClosedXML 创建的 WorkBook 文件而不保存呢?

【问题讨论】:

    标签: c# excel memorystream closedxml


    【解决方案1】:

    您可以将 WorkBook 保存到 MemoryStream。

    wb.SaveAs(new MemoryStream()); 
    

    但是你需要一些程序来查看文件(字节)

    为避免在其他用户尝试访问文件时出现异常,您应该编写一个方法来等待文件被释放。

    建议:https://www.codeproject.com/Tips/164428/C-FileStream-Lock-How-to-wait-for-a-file-to-get-re

    【讨论】:

    • 为了您的回答,我需要已经保存文件,并且我想在没有实际保存的情况下打开工作簿
    • 遗憾的是,我不知道一个可以发送文件字节并打开它的 excel 程序。我目前知道的唯一解决方案是保存文件 - 之前检查它是否已经存在,如果是的话,用其他名称保存 - 然后打开它。完成后删除文件。或者您在应用程序中添加一个 excel 查看器
    【解决方案2】:

    如果您的主要问题是“很少有人同时使用该程序并尝试获取 excel 文件会导致错误”,那么您可以简单地每次生成唯一的文件名(例如使用 GUID) .

    ClosedXML 确实支持将文件保存在内存流中,但 Excel 不会接受此作为有效数据源。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多