MemoryStream
Excel ドキュメントを作成するための API と EPPlus を使用して、メモリ内に Excel ファイルを作成しています。
Excelファイルを作成するための私のコードは、基本的に次のようになります。
public Stream GetXlsDocument(IQueryable data)
{
const string sheetName = "Sheet1";
var file = new FileInfo("test2.xls");
MemoryStream stream = new MemoryStream();
using (ExcelPackage p = new ExcelPackage(stream))
{
p.Workbook.Worksheets.Add(sheetName);
ExcelWorksheet ws = p.Workbook.Worksheets[1];
ws.Name = sheetName;
ws.Cells.Style.Font.Size = 11;
ws.Cells.Style.Font.Name = "Calibri";
// Headers
ws.SetValue(1, 1, "Some data");
p.SaveAs(stream);
}
stream.Position = 0;
return stream;
}
次に、他の関数がこのストリームをダウンロードとしてユーザーに提供する必要があります。私はこのようにしようとしています:
var file = Documents.GetXlsDocument();
var memoryStream = new MemoryStream();
file.CopyTo(memoryStream);
Response.Clear();
Response.ContentType = "application/force-download";
Response.AddHeader("content-disposition", "attachment; filename=nfile.xls");
Response.BinaryWrite(memoryStream.ToArray());
Response.End();
これにより、ダウンロードダイアログが表示されます。しかし、Excelファイルを開くと、Excelドキュメント全体がゴミでいっぱいになります(文字列として表されたバイナリデータだと思います)。
私は何が間違っているのか分かりません。
Excelファイルを適切な形式でダウンロード可能にする方法を知っている人はいますか? おそらく、EPPlus はすでにこのための何かを持っていますか?