Open XMLを使用してMVCからExcelドキュメントを生成しています。OpenXMLを使用してMVCコントローラからワークブックを読み取る
コードは以下の通りです:
public ActionResult ExcelReport()
{
var custId = 1234; //ToDo get from session when it is set
using (MemoryStream mem = new MemoryStream())
{
ExcelReportGenerator excel = new ExcelReportGenerator();
excel.CreateExcelDoc(mem);
var reportName = string.Format("MyReport_{0}.xlsx", custId);
return File(mem.ToArray(), System.Net.Mime.MediaTypeNames.Application.Octet, reportName);
}
}
マイCreateExcelDoc方法は以下の通りです:
public void CreateExcelDoc(MemoryStream mem)
{
SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Create(mem, SpreadsheetDocumentType.Workbook);
//SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Open(mem, false);
//Code removed for brevity
worksheetPart.Worksheet.Save();
spreadsheetDocument.Close();
}
期待通りにExcelシートをダウンロードして作成する方法で。しかし、ワークブックを読み取り専用にして、Memストリームを渡してisEditableをfalseに設定しようとしましたが、エラーが発生したときにYSODを取得しました。Exception Details: System.IO.FileFormatException: Archive file cannot be size 0.
これはまさに私が必要とするものです - ありがとう:) –