web-dev-qa-db-ja.com

ローカルファイルを作成せずにOpenXMLを使用してExcelファイルを作成する方法

ローカルファイルを作成せずにOpenXML SDKを使用してExcelドキュメントを作成および編集することは可能ですか?

ドキュメントのとおり、Createメソッドはfilepathを要求し、ファイルのローカルコピーを作成します。

SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Create(filepath, SpreadsheetDocumentType.Workbook);

ここでMSDNの記事を参照しています: https://msdn.Microsoft.com/en-us/library/office/ff478153.aspx

私の要件はファイルを作成することであり、ボタンをクリックするとブラウザによってダウンロードされます。

なにか提案を?

19
Bishnu D.

SpreadsheetDocument.CreateStreamを受け取り、MemoryStreamを渡します:

MemoryStream memoryStream = new MemoryStream();
SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Create(memoryStream, SpreadsheetDocumentType.Workbook);

//add the Excel contents...

//reset the position to the start of the stream
memoryStream.Seek(0, SeekOrigin.Begin);

return new FileStreamResult(memoryStream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");

このStackOverflowの質問 のように、FileStreamResultクラスによってストリームが破棄されるため、ストリームを破棄する必要はありません。

28
petelids