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

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

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

просто хотел следить, чтобы узнать, отвечает ли ниже на ваш вопрос.

Todd Main 18.02.2011 23:03

@ToddMain мы находимся в 2014 году, вы видели последнее решение ??

Mahdi Alkhatib 05.08.2014 19:49

@ Махди Алхатиб, это был не мой вопрос.

Todd Main 06.08.2014 03:58
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
14
3
35 743
5

Ответы 5

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

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

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

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

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

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

Anonymous Type 21.05.2010 07:34

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

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

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

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

Другие вопросы по теме