Как записать книгу Excel в MemoryStream в .NET? - PullRequest
13 голосов
/ 01 октября 2008

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

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

Ответы [ 5 ]

6 голосов
/ 01 октября 2008

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

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

4 голосов
/ 17 мая 2010

Это можно сделать с помощью Open XML SDK 2.0. У Эрика Уайта есть отличная статья о том, как работать с файлами OOXML в потоке, на Работа с открытыми XML-документами в памяти

1 голос
/ 17 мая 2010

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

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

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

1 голос
/ 04 октября 2008

Другой вариант - использовать эту бесплатную библиотеку для экспорта книги. Метод save в классе книги может принимать имя файла или поток.

1 голос
/ 01 октября 2008

Если вам нужны только основные функции из Excel, вы можете создать рабочую книгу в виде потока Html. Есть еще один вопрос на ТА, который без рук это .

Это также решает некоторые проблемы (которые могут быть еще у вас) относительно масштабируемости вашего решения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...