Как написать книгу Excel в MemoryStream в .NET?

Как написать книгу Excel в MemoryStream без сохранения ее в файловой системе?

Все параметры в параметрах сохранения Microsoft.Office.Interop.Excel.WorkBook принимают имя файла.

Ответы

Ответ 1

Я провел обширную работу с PIA и сохранил файлы Excel в репозитории документов и передал их в браузер, и я не смог найти решение для использования PIA без предварительной записи содержимого в файл сначала.

Я думаю, что вам придется усвоить пулю и разобраться с файловой системой в качестве посредника. Хорошей новостью является то, что вы можете просто предоставить файлу уникальное имя, например, guid или использовать какой-либо другой метод tempfilename (не уверен, существует ли он в .net) и просто удалять содержимое, когда вы закончите.

Ответ 5

Единственный способ, которым вы могли бы это сделать, - это подготовить свой пользовательский объект, который позволил бы хранить все различные биты и фрагменты данных/формул/vba/links/ole, которые вы хотели сохранить, скопировать из вашей книги к объекту, а затем сохраняйте этот объект в потоке памяти. В случае использования вашего прокси-объекта в качестве перехода между ними.

Невозможно (как другие говорили) писать файл Excel прямо в память.

В формате Excel 2007 OpenXML вы можете использовать событие BeforeSave для книги, чтобы иметь собственный метод, который сначала устанавливает параметр Cancel для события BeforeSave в значение True, а затем сериализует результирующий XML-пакет (представляющий файл) в объект в памяти.