【发布时间】:2017-04-21 13:51:48
【问题描述】:
我正在使用 Open XML 从 MVC 生成 Excel 文档。
代码如下:
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();
}
使用 create 方法可以按预期下载 Excel 工作表。但是,我想将工作簿设为只读,因此尝试使用 .Open 方法传递 mem 流并将 isEditable 设置为 false,但是当我遇到错误 Exception Details: System.IO.FileFormatException: Archive file cannot be size 0.
【问题讨论】:
标签: c# asp.net-mvc excel openxml openxml-sdk