2015-04-27 34 views
9

Czy można utworzyć i edytować dokument Excel za pomocą zestawu SDK OpenXML bez tworzenia pliku lokalnego?Jak utworzyć plik Excel za pomocą OpenXML bez tworzenia pliku lokalnego?

Zgodnie z dokumentacją metoda "Utwórz" wymaga ścieżki pliku, która tworzy lokalną kopię pliku.

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

mam na myśli artykuł MSDN tutaj: https://msdn.microsoft.com/en-us/library/office/ff478153.aspx

Moje wymogiem jest, aby utworzyć plik, a powinien on być pobierany przez przeglądarkę na kliknięcie przycisku.

Jakieś sugestie?

Odpowiedz

18

Można użyć przeciążenie SpreadsheetDocument.Create że trwa Stream i przekazać on 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"); 

Należy zauważyć, że zgodnie this StackOverflow question nie trzeba wyrzucać Stream jak będzie to miało dla Ciebie przez klasa FileStreamResult.

+0

Dzięki petelids. Zadziałało –