+7 (495) 229-0436   shopadmin@itshop.ru 119334, г. Москва, ул. Бардина, д. 4, корп. 3
 
 
Вход
 
 
Каталог
 
 
Подписка на новости
Новости ITShop
Windows 7 и Office: Новости и советы
Обучение и сертификация Microsoft
Вопросы и ответы по MSSQLServer
Delphi - проблемы и решения
Adobe Photoshop: алхимия дизайна
 
Ваш отзыв
Оцените качество магазина ITShop.ru на Яндекс.Маркете. Если вам нравится наш магазин - скажите об этом Google!
 
 
Способы оплаты
 
Курс расчета
 
 1 у.е. = 91.78 руб.
 
 Цены показывать:
 
 
 
 
  
Новости, статьи, акции
 

Excel загрузка и выгрузка данных, используя OpenXML

28.11.2013 16:43
Voucik

Решил написать статью, о том, как сделать выгрузку данных в Excel файл по шаблону и считывать данные из Excel.
Началось всё с того, что на работе, дали указание, уйти от MS Office, на бесплатные аналоги.
У нас уже была система выгрузки, основанная на библиотеке "Microsoft.Office. Interop.Excel" и много готовых шаблонов, для выгрузки тех или иных отчётов.
Поэтому надо было найти бесплатную библиотеку, работающую с офисом. И сделать так, чтоб выгрузка работала по той же системе, что и раньше. Ибо переделывать все шаблоны и структуру, не хотелось.
Вот я и наткнулся на OpenXML. И думал, сейчас по быстрому найду решение в интернете и всё готово (т.к. на это было выделено мало времени). Но подходящего решения так и не нашёл, поэтому и решил написать эту статью, для тех у кого будет, такая же проблема.
Саму библиотеку, можно скачать бесплатно с сайта Micrisoft (я использовал в проекте OpenXML sdk 2.5 " OpenXMLSDKV25.msi ")
здесь.
После скачивания "OpenXMLSDKV25.msi ", устанавливаем и заходим в папку
"C:\Program Files\Open XML SDK\V2.5\lib" там лежит библиотека, которая нам понадобится, мы её подключим к проекту (ниже будет описано, как).
Проект был написан на Visual Studio 2010 (Framework 4.0).
Ниже пример шаблона (сделан для теста) "C:\Templates\template.xlsx".

image

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

image

Ключевые слова:
DataField: - Означает, что на этом месте будут выведены наши банные из DataTable.
DataField:[название выводимого поля]
Label: - Означает, что на этом месте будут выводиться данные, которые надо вставить однократно из словаря
Label:[название ключа в словаре]
А это файл из которого мы будем считывать данные "C:\Loading\ReadMePlease.xlsx".

image

Теперь создадим в VS2010, Решение в котором будет 4 проекта:
1) OpenXmlPrj - это консольный проект, для запуска теста.
2) Interfaces - это проект типа "Библиотека классов", будет хранить наши интерфейсы данных для выгрузки.
3) Framework - это проект типа "Библиотека классов", тут и будет происходить вся работа с Excel-ем.
4) Converter - это проект типа "Библиотека классов", для конвертирования наших данных в DataTable (т.к. работа происходит с DataTable).
image
Теперь в проекте "Framework" создаём две папки и подключим ссылку на библиотеку OpenXML и WindowsBase:
"Create" - для работы с выгрузкой данных.
"Load" - для работы с загрузкой данных.
"lib" - в папку, добавим библиотеку OpenXML.
В папке "Create" создаём 4 класса.
1) Worker - это будет наш главный обработчик.

класс Create.Worker

2) Footer - будет содержать строки и их ячейки идущие после наших данных.

класс Footer

3) CellForFooter - содержит в себе координаты ячейки и её значение, используется в Footer-е.

класс CellForFooter

4) Field - будет содержать индекс строки, где находится DataField, координаты ячеек с DataField и название поля, значение которого надо вывести.

класс Field

В папке "Load" создаём 2 класса.
1) Worker - это будет наш главный обработчик.

класс Load.Worker

2) ColumnName - будет название колонки, для загружаемых данных.

класс ColumnName

В проекте "Interfaces" создадим интерфейс наших данных IDataForTest.

интерфейс IDataForTest

В проекте "Converter" создадим класс
ConvertToDataTable - для конвертирования наших данных в DataTable.

класс ConvertToDataTable

В проекте "OpenXmlPrj"
Будет класс для выполнения программы "Program".

класс Program

И класс для наших данных "DataForTest".

класс DataForTest

И проекте "OpenXmlPrj" надо подключить ссылки на следующие проекты: Interfaces, Framework, Converter
Условия для создания шаблона:
1. Excel лист, обязательно должен называться "Лист1" (ну или если захотите переименовать, то в коде надо будет изменить название тоже).
2. Названия после DataField: должны строго совпадать с названиями колонок в DataTable.
3. Шаблон должен быть сохранён в формате ".xlsx".
Условия для файла, с которого мы будем считывать данные:
1. Excel лист, обязательно должен называться "Лист1" (ну или если захотите переименовать, то в коде надо будет изменить название тоже).
2. Первая строка, должна содержать названия колонок, по которым мы потом будем парсить данные.

Ссылки по теме

  
Помощь
Задать вопрос
 программы
 обучение
 экзамены
 компьютеры
Бесплатный звонок
ICQ-консультанты
Skype-консультанты

Общая справка
Как оформить заказ
Тарифы доставки
Способы оплаты
Прайс-лист
Карта сайта
 
Бестселлеры
Курсы обучения "Atlassian JIRA - система управления проектами и задачами на предприятии"
Microsoft Windows 10 Профессиональная 32-bit/64-bit. Все языки. Электронный ключ
Microsoft Office для Дома и Учебы 2019. Все языки. Электронный ключ
Курс "Oracle. Программирование на SQL и PL/SQL"
Курс "Основы TOGAF® 9"
Microsoft Office 365 Персональный 32-bit/x64. 1 ПК/MAC + 1 Планшет + 1 Телефон. Все языки. Подписка на 1 год. Электронный ключ
Курс "Нотация BPMN 2.0. Ее использование для моделирования бизнес-процессов и их регламентации"
 

О нас
Интернет-магазин ITShop.ru предлагает широкий спектр услуг информационных технологий и ПО.

На протяжении многих лет интернет-магазин предлагает товары и услуги, ориентированные на бизнес-пользователей и специалистов по информационным технологиям.

Хорошие отзывы постоянных клиентов и высокий уровень специалистов позволяет получить наивысший результат при совместной работе.

В нашем магазине вы можете приобрести лицензионное ПО выбрав необходимое из широкого спектра и ассортимента по самым доступным ценам. Наши менеджеры любезно помогут определиться с выбором ПО, которое необходимо именно вам. Также мы проводим учебные курсы. Мы приглашаем к сотрудничеству учебные центры, организаторов семинаров и бизнес-тренингов, преподавателей. Сфера сотрудничества - продвижение бизнес-тренингов и курсов обучения по информационным технологиям.



 

О нас

 
Главная
Каталог
Новинки
Акции
Вакансии
 

Помощь

 
Общая справка
Как оформить заказ
Тарифы доставки
Способы оплаты
Прайс-лист
Карта сайта
 

Способы оплаты

 

Проекты Interface Ltd.

 
Interface.ru   ITShop.ru   Interface.ru/training   Olap.ru   ITnews.ru  
 

119334, г. Москва, ул. Бардина, д. 4, корп. 3
+7 (495) 229-0436   shopadmin@itshop.ru
Проверить аттестат
© ООО "Interface Ltd."
Продаем программное обеспечение с 1990 года