Tooprogram.ru

Компьютерный справочник
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

C и excel

Работа с Excel c нуля

здравствуйте, я кое-как освоил работу с С# вот у меня возникло желание написать программу работающую с данными, которые записаны в Excel таблицу. в связи с этим вопрос как осуществить следующие действия: открыть таблицу, узнать ее размер, слить данные из ячейки с координатами XY или записать в таблицу что-то,

П.С. я никаких dll не умею ставить, если ваше решение содержит стороннюю dll то пожалуйста объясните, я много гуглил, но не нашел ничего понятного мне. нашел решение через COM Interop, но у меня не компилируется using Excel = Microsoft.Office.Interop.Excel; и в доступных ссылках нет Microsoft.Office.Interop.Excel чтобы подключить нужную библиотеку, но я вообще не настаиваю чтобы решение было через эту библиотеку. мне бы хоть как-то.

Добавлено через 3 часа 59 минут
народ, хелп, нужна помощь, как вы открываете Excel файлы? в интеренте разбирают Microsoft.Office.Interop.Excel но я нигде не могу найти библиотеку чтобы использовать это. подскажите как эту проблему решить можно, очень надо из экселя данные брать, а не могу.если не знаете как с этим вариантом быть, то напишите любой известный вам способ.

07.01.2017, 16:14

Работа с документами Excel без Microsoft.Office.Interop.Excel
всем добрый день все дело в том что для своих программ я использую БД Excel но! однако не все.

Работа с Excel (нет доступа к пространству имен Excel)
Здравствуйте! У меня проблема в том, что я делаю все так как там, но выдает ошибку в строчках на.

Экспорт в Excel: Прекращена работа программы «Microsoft Excel»
Файл сохраняется успешно, но поле строки excelApp.Quit(); Появляется окно ошибки Excel: .

Cколько чисел больше нуля, меньше нуля и среднее всех отрицательных чисел
Помогите с кодом Задание: Вводятся N чисел. Программа считает сколько чисел больше нуля, меньше.

07.01.2017, 16:50208.01.2017, 00:11 [ТС]308.01.2017, 05:304

Вот неплохая библиотека https://www.nuget.org/packages/EPPlus
Легко установить через PM> Install-Package EPPlus

08.01.2017, 13:05508.01.2017, 13:33 [ТС]6

библиотеку using Excel = Microsoft.Office.Interop.Excel; удалось корректно подключить. помогите написать консольное приложение, которе будет с Excel файла считывать численные данные с таких-то ячеек?

Читать еще:  Формат градусов минут секунд в excel

Чтобы в ячейку А1 что-то записать надо написать такой-то код:

только вопрос: куда должен сохранятся этот фаил? или это делается отдельной командой?

Эффективные способы работы с Excel

Работаю в консольных приложениях. у меня стоит Windows 10 и VS последняя актуальная версия. Кое как, методом тыка и вдумчивого поиска, разобрался с элементарными задачами: прочитать данные в такой-то ячейке, записать данные в такую-то ячейку, и создать новую книгу.
Использовал при этом:

Для меня большая проблема состоит в том, что я не вижу документации для работы с этой библиотекой. Если вы считаете, что есть более эффективные способы работы с Excel через C#, то просветите меня. Буду рад, если вы понятно для меня изложите.

3 ответа 3

Во-первых вам следует определиться, какой вам формат нужен: .xls или .xlsx . Они совершенно разные: xls — бинарный, а xlsx — это zip-архив XML файлов. Также, возможно, вам может подойти ods файл, который тоже представляет собой zip-архив XML файлов, но об этом ниже.

Office COM Interop

То о чём вы ведёте речь называется Office Interop. Иногда ещё к этому названию добавляют COM. Я сильно рекомендую его не использовать. Разве что только вы генерируете небольшие файлы на компьютере для себя. Почему?

Много утечек памяти. Ни в коем случае не используйте эту библиотеку для веб-сайтов или приложений, где на сервере генерируются файлы Office-форматов. У вас кончится оперативная память довольно быстро и сайт или приложение упадёт.

Microsoft does not currently recommend, and does not support, Automation of Microsoft Office applications from any unattended, non-interactive client application or component (including ASP, ASP.NET, DCOM, and NT Services), because Office may exhibit unstable behavior and/or deadlock when Office is run in this environment.

Что в вольном переводе значит:

Корпорация Майкрософт не рекомендует и не поддерживает, автоматизации приложений Microsoft Office с помощью автоматических, не-интерактивных клиентских приложений или компонентов (включая ASP, ASP.NET, DCOM и службы NT), потому что офис может показывать нестабильное поведение и/или взаимоблокировку (deadlock), когда офис работает в этой среде.

Требует наличия офиса определённой версии. На каждую машину, где будет работать ваше приложение.

Читать еще:  Именованные диапазоны в excel

Рассмотрю xlsx файлы. Вроде уже прошло время, когда ещё надо поддерживать Office 2003 и ниже.

Путаница с названием форматов

Некорректно называть этот формат Excel. Excel — это одна из программ пакета Microsoft Office. (Также некорректно называть docx -файл Word ). Называть формат xlsx Excel — приблизительно то же самое, что называть формат HTML — Internet Explorer.

Office Open XML

Что следует из того, что это zip-архив XML файлов? Что это значит?

Это значит, что вы можете взять любой Open XML формат (все которые оканчиваются на x : docx , xlsx , pptx и т.д.), переименовать расширение на zip, открыть его. Затем можно посмотреть все нужные XML-файлы и можно даже попробовать их редактировать. (То же самое справедливо и для ods , но это OpenDocument -формат, а не Open XML !).

Стандарт Open XML

xlsx -файлы безусловно связаны с реализацией Microsoft. OpenXML форматы (все которые оканчиваются на x : docx , xlsx , pptx и т.д.) стали выходить после пакета офиса 2007 года. Microsoft опубликовало спецификацию в 2006 году, затем выпустило офис. А зачем Microsoft выпустило спецификацию? Для того, чтобы её реализовать мог кто угодно.

Трудности в работе с Open XML

Важное обновление. Все нижеописанные трудности крайне успешно решаются с помощью бесплатного инструмента от Microsoft под названием OpenXML SDK Productivity Tool. Он позволяет

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

Дело в том, что стандарт Open XML мягко говоря, громоздкий (занимает 6546 страниц), поэтому его просто не осилишь просто чтением стандарта.

И с ним работать довольно тяжело. У вас есть объектная обёртка над различными тэгами XML. НО:

При разработке ничто не подсказывает что и куда должно быть вложено. Вам приходится находить рабочие примеры и делать из них «винигрет» того, что работает.

Основная трудность помимо того, что нет никакой подсказки до компиляции что с ним делать, что нет и никаких исключений и ошибок, если вы сгенерировали невалидную XML-структуру.

Читать еще:  Виснет файл excel

Всё сильно усугляется тем, что офис просто не откроет ваш документ. Точнее откроет и выдаст «The file is corrupt and cannot be opened». То есть одна ошибка (вложили не тот элемент или чего-то не вложили) и даже гигантский документ не открывается.

Вам приходится вникать в низкоуровневые детали того, как устроено хранение данных. То есть сама разработка сильно усложняется тем, что вам приходится писать код для казалось бы простых вещей. К примеру:

Здесь вы узнаете, что строковые значения ради производительности хранятся в специальной таблице ( SharedStringTable ) и при добавлении и новой строки добавляется всего лишь порядкой номер в этой таблице (к примеру в ячейке будет хранится 1 ). То есть если вам надо добавить строковое значение в ячейку вам надо будет посмотреть в таблицу SharedStringTable есть ли там такая строка, и если нет — то создать запись в этой таблице, и вернуть новое число, если да — то взять порядковый номер.

Для того, чтобы даты просто добавить ячейку как дату, надо помнить что они хранятся как числа (OLE Date), но весь курьёз заключается в том, что есть тип CellValues.Date , который не работает. Далее надо будет добавить несколько секций стилей и тогда всё заработает. Пример. Если вам ещё важен формат дат, то это тоже потребует времени разобраться, как именно хранятся форматы данных.

Если вам надо будет просто удалить строку (row) или столбец (column), то придётся все значения (ниже или правее) переносить вручную.

Библиотеки, основанные на Open XML

В общем, если обернуть всё методами и потратить где-то 1-3 рабочих дня, то в целом можно и так работать. Чтобы избежать этих сложный вещей используйте уже готовые библиотеки, основанные на Open XML:

Open Document Format

Помимо xls и xlsx существует также формат ods , который первоначально поддерживался в OpenOffice и затем LibreOffice. Cейчас форматы Open Document уже поддерживаются и Microsoft Office. Для этого работы с форматами Open Document существует библиотека AODL, для которой есть Nuget-пакет и примеры.

Ссылка на основную публикацию
Adblock
detector