Как записать рабочую книгу Excel в MemoryStream в.NET?

13
задан Todd Main 22 July 2010 в 19:46
поделиться

5 ответов

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

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

6
ответ дан 2 December 2019 в 00:47
поделиться

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

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

1
ответ дан 2 December 2019 в 00:47
поделиться

Другая опция состояла бы в том, чтобы использовать этот свободная библиотека для экспорта рабочей книги. Метод сохранения на классе рабочей книги может или взять имя файла или поток.

1
ответ дан 2 December 2019 в 00:47
поделиться

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

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

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

1
ответ дан 2 December 2019 в 00:47
поделиться

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

4
ответ дан 2 December 2019 в 00:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: