2017-12-01 9 views
0

外部ExcelファイルストリームからOpenXml SpreadsheetDocumentを作成しています。数式と値を追加します。OpenXML SpreadsheetDocumentをストリームに保存する

ただし、ストリームに保存しようとすると、ほとんどのデータが失われ、開くことはできません。ここで

は、私が使用するコードです:

var stream= new MemoryStream(); 
. 
. 
. 
spreadsheetDocument.WorkbookPart.Workbook.Save(stream); 
stream = new MemoryStream(stream.ToArray()); 
stream.Position = 0; 

return stream; 

答えて

0

は本当に必要な2 MemoryStreamていますか?

MemoryStreamを取得する前に、tempStreamをフラッシュしてください。 例:

spreadsheetDocument.WorkbookPart.Workbook.Save(tempStream); 
tempStream.Flush(); 
stream = new MemoryStream(tempStream.ToArray()); 

また、出力をファイルに保存したり、メモリからそれを読んでいますか? MemoryStreamの内容は、.Close()と同じように論理的に失われます。

+0

本当に2つのMomoryStreamは必要ありません。 私はメモリからの出力を読み込み、それをブラウザにレンダリングしています。そして私は.Close()を呼び出していないので、 "spreadsheetDocument.WorkbookPart.Workbook.Save(tempStream);"と呼びました。 推奨される "Flush()"を使用しますが、ブラウザは出力をレンダリングできません。それは言う: "ブックはおそらく破損しているか、サポートされていないファイル形式を使用します。 –

+0

@BaronNtambwe、これをまだ解決していなければ(申し訳ありませんが、休暇中でした)、完全な機能を表示できますか?ストリームをファイルに保存しようとしましたが、そのようなファイルは読み込み可能ですか? – r41n

+0

私はOpenXMLとCloseXMLの組み合わせを使ってしまいました。 OpenXMLで処理し、ストリームをCloseXMLに渡して保存します。 それはうまくいきました。 –

関連する問題