public static void Createxlsx(string filename)
{
MemoryStream stream = new MemoryStream();
//create a package
using (var package = new ExcelPackage(stream)) // disposing ExcelPackage also disposes the above MemoryStream
{
var worksheet = package.Workbook.Worksheets.Add("worksheet");
package.Save();
// see the various ways to create/open a file, Create is just one of them
// open the file stream
using(var file = System.IO.File.Open("C:\\ConsoleApplicationXLSX\\" + filename + ".xlsx", System.IO.FileMode.CreateNew))
{
stream.Position = 0; // reset the position of the memory stream
stream.CopyTo(file); // copy the memory stream to the file stream
}
}
}
いくつかの注意
- が
using
文の中で、あなたのストリーム(メモリ、ファイルなど)をラップ追加。これにより、スコープ外になった後にストリームが常に解放/解放されます(実装されたIDisposableインターフェイスを使用)。
- FileModeを参照してください。上記で選択したオプション
CreateNew
は、既存のファイルを上書きしようとすると例外がスローされます。気にしない場合は、代わりにCreate
を使用してください。
- 最後に、ストリームの位置をコピーする前にリセットする必要があります。それ以外の場合は、現在の位置が途切れた位置を取得します。通常、ストリームの最後に位置します。
編集
またMemoryStream
せずにこれを行うことができます。
public static void Createxlsx(string filename)
{
using(var file = System.IO.File.Open("C:\\ConsoleApplicationXLSX\\" + filename + ".xlsx", System.IO.FileMode.CreateNew))
using (var package = new ExcelPackage(file)) // disposing ExcelPackage also disposes the above MemoryStream
{
var worksheet = package.Workbook.Worksheets.Add("worksheet");
package.Save();
}
}