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

时间:2012-12-19 16:03:59

标签: c# openxml-sdk

我正在使用OpenXML SDK。

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

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

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

gc.CreatePackage(excelFilePath);
Process.Start(_excelFilePath);

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

1 个答案:

答案 0 :(得分:2)

根据documentation for SpreadsheetDocument.Create,有多个重载,其中一个需要Stream

所以请将您的代码更改为:

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

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

using(var memoryStream = new MemoryStream())
{
   CreatePackage(memoryStream);
   // do something with memoryStream
}