web-dev-qa-db-fra.com

Comment créer un fichier Excel en utilisant OpenXML sans créer de fichier local?

Est-il possible de créer et de modifier un document Excel à l'aide d'OpenXML SDK sans créer de fichier local?

Selon la documentation, la méthode Create exige un filepath, qui crée une copie locale du fichier.

SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Create(filepath, SpreadsheetDocumentType.Workbook);

Je fais référence à l'article MSDN ici: https://msdn.Microsoft.com/en-us/library/office/ff478153.aspx

Mon exigence est de créer le fichier, et il doit être téléchargé par le navigateur en cliquant sur un bouton.

Toute suggestion?

19
Bishnu D.

Vous pouvez utiliser la surcharge de SpreadsheetDocument.Create qui prend un Stream et lui passe un MemoryStream:

MemoryStream memoryStream = new MemoryStream();
SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Create(memoryStream, SpreadsheetDocumentType.Workbook);

//add the Excel contents...

//reset the position to the start of the stream
memoryStream.Seek(0, SeekOrigin.Begin);

return new FileStreamResult(memoryStream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");

Notez que selon cette question StackOverflow vous n'avez pas besoin de supprimer le Stream car il sera fait pour vous par la classe FileStreamResult.

28
petelids