如何返回流而不是写入磁盘?

Nat*_*Pet 5 c# openxml-sdk

我正在使用OpenXML SDK.

OpenXML SDK创建了一个名为CreatePackage的方法:

public void CreatePackage(string filePath)
{
    using (SpreadsheetDocument package = SpreadsheetDocument.Create(filePath,               SpreadsheetDocumentType.Workbook))
    {
        CreateParts(package);
    }
}
Run Code Online (Sandbox Code Playgroud)

我从我的程序中调用它如下,它将创建Excel文件到给定的路径:

gc.CreatePackage(excelFilePath);
Process.Start(_excelFilePath);
Run Code Online (Sandbox Code Playgroud)

我不知道如何调整代码,以便它返回一个Stream,显示Excel文件与在磁盘上创建文件.

Jam*_*iec 2

根据文档,SpreadsheetDocument.Create有多个重载,其中之一需要Stream.

所以将您的代码更改为:

public void CreatePackage(Stream stream)
{
    using (SpreadsheetDocument package = SpreadsheetDocument.Create(stream,               SpreadsheetDocumentType.Workbook))
    {
        CreateParts(package);
    }
}
Run Code Online (Sandbox Code Playgroud)

然后使用任何有效的调用它Stream,例如:

using(var memoryStream = new MemoryStream())
{
   CreatePackage(memoryStream);
   // do something with memoryStream
}
Run Code Online (Sandbox Code Playgroud)