Je génère un document Excel à partir de MVC en utilisant Open XML.Création d'un classeur en lecture seule à partir de MVC Controller avec OpenXML
Le code est comme ci-dessous:
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);
}
}
Ma méthode CreateExcelDoc est comme ci-dessous:
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();
}
Avec la méthode de création de la feuille Excel est en cours de téléchargement comme prévu. Cependant, je voulais que le classeur soit en lecture seule, donc essayer la méthode .Open passant le flux mem et le jeu isEditable à false mais je reçois un YSOD quand je frappe le contrôleur avec une erreur Exception Details: System.IO.FileFormatException: Archive file cannot be size 0.
c'est exactement ce dont j'ai besoin - Merci :) –