Сохранение/чтение/работа с файлами Excel без вызова СОМ (альтернативные методы)11.05.2017, 09:35. Показов 7766. Ответов 17
Метки нет (Все метки)
Добрый день, коллеги!
Столкнулся с такой проблемой: в проекте Windows Forms реализовал сохранение в Excel файл (в два формата) таким образом
Отсюда у меня вопрос: как можно реализовать сохранение/открытие в/из файлов Ексель на форму программы, без вызова СОМ ну или каким-то образом, что бы привязок к Меклкософтовскому офису на ПК не было? Заранее спасибо за помощь!
0
|
||||||
| 11.05.2017, 09:35 | |
|
Ответы с готовыми решениями:
17
Сохранение картинки без вызова диалогового окна
Альтернативные методы оплаты |
|
138 / 137 / 42
Регистрация: 26.10.2012
Сообщений: 443
|
|
| 11.05.2017, 10:19 | |
Сообщение было отмечено Cha1000000 как решение
Решение
Cha1000000, можно еще проще. Уже все придумали. Бесплатная библиотека EpPlus. Неоднократно использовал ее в своих проектах. Все просто и быстро делается. Пример работы с библиотекой можно почитать здесь
1
|
|
| 11.05.2017, 10:55 [ТС] | |||
|
0
|
|||
|
138 / 137 / 42
Регистрация: 26.10.2012
Сообщений: 443
|
|
| 11.05.2017, 11:04 | |
|
Cha1000000, эта библиотека решает проблему чтения/сохранения если вообще ничего не установлено на ПК, кроме .Net Framework. Ей не нужны никакие сторонние либо мелкософтовские решения/компоненты. Полностью самостоятельный продукт.
0
|
|
| 11.05.2017, 11:17 [ТС] | |
|
0
|
|
| 12.05.2017, 13:55 [ТС] | ||
Пока изучал материалы по данной библиотеке, нашёл, что есть ещё куча разных альтернативных библиотек на подобии этой (ну каждая, видимо, со своими особенностями). А вы можете ещё какую-то конкретную порекомендовать вместо EpPlus?
0
|
||
|
14136 / 9359 / 1350
Регистрация: 21.01.2016
Сообщений: 35,175
|
|
| 12.05.2017, 14:04 | |
|
Cha1000000,
XLS (как и DOC) - закрытый проприетарный формат. Сложно будет по нему инфу найти или нормальную библиотеку. CSV - открытый и очень простой формат, вы его сами сможете прочесть, без сторонних библиотек.
0
|
|
| 12.05.2017, 14:28 [ТС] | |||
|
0
|
|||
|
138 / 137 / 42
Регистрация: 26.10.2012
Сообщений: 443
|
|
| 13.05.2017, 17:49 | |
|
Cha1000000, для xls другая библиотека есть. Только Вам зачем этот формат? он же древний как прах мамонта
0
|
|
| 14.05.2017, 00:48 [ТС] | ||
|
Про библиотеку спасибо, тоже в процессе поиска сведений на ней пока остановился, разбираюсь и ищу годные примеры как по прямому импорту/экспорту из DataGreedView в xls, так и с использованием DataTable (с которым я пока дел не имел, не пользовался и не до конца пока разобрался). Буду так же признателен, если кто поделится такими примерами. Спасибо!
0
|
||
|
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
|
|
| 14.05.2017, 01:12 | |
|
0
|
|
|
14136 / 9359 / 1350
Регистрация: 21.01.2016
Сообщений: 35,175
|
||
| 14.05.2017, 06:59 | ||
|
0
|
||
| 15.05.2017, 09:35 [ТС] | ||
|
0
|
||
| 30.05.2017, 10:17 [ТС] | |||||||||||||||||||||||||||||||||||||
Вот такое сообщение: "Процесс не может получить доступ к файлу "D:\Documents\base.xls", так как этот файл используется другим процессом." Может я что-то делаю не правильно и есть какой-то более верный способ сохранить в эксель данные через SaveFileDialog? Подскажите пожалуйста, а то уже как только не пробовал, ни в какую... Пробовал SaveDialog.Dispose(); вызвать после создания файла - не помогает. Может его как-то можно "освободить"? Добавлено через 37 минут Коллеги! Ответ из серии: "сам спросил, сам ответил". Я уже сам успел разобраться и найти решение. И для тех, кому интересно и может быть полезным, расскажу в чём была суть. В общем да, SaveDialog создавал и удерживал файл, и для этого понадобилось перехватить его поток и потом закрыть его, что бы освободить файл. Создал поток:
0
|
|||||||||||||||||||||||||||||||||||||
|
138 / 137 / 42
Регистрация: 26.10.2012
Сообщений: 443
|
|
| 30.05.2017, 21:03 | |
|
Cha1000000, здорово что у Вас получилось самостоятельно решить проблему) Единственное, на мой взгляд, поскольку у Вас есть уже экземпляр Stream при создании файла, то в него и пишите содержимое файла. Не вижу смысла одним потоком создавать файл, другим редактировать
![]()
0
|
|
| 31.05.2017, 15:12 [ТС] | ||
|
Добавлено через 3 часа 18 минут Всё получилось! Оказывается метод .Write(...) и принимает параметр типа Stream, я просто сразу не обратил на это внимания. Вот только теперь мне интересно, а как же он тогда проглатывал переменную var fs = new FileStream(File_Name, FileMode.Open, FileAccess.Write) c типом FileStream ? Не потому ли, что она типа var и от этого может как хамелеон подгонять свой тип данных под различные "условия"?
0
|
||
|
0 / 0 / 0
Регистрация: 23.05.2016
Сообщений: 2
|
||
| 13.08.2018, 13:22 | ||
|
FileStream просто дочка Stream.
0
|
||
| 13.08.2018, 13:22 | |
|
Помогаю со студенческими работами здесь
18
Чтение и сохранение информации из .xls (Excel) Работа с файлами(Запись,чтение,работа с данными)
Чтение стандарта C++: альтернативные подходы к изучению Работа с файлами: чтение массива Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|