(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

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

Источник: habrahabr
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. Первая строка, должна содержать названия колонок, по которым мы потом будем парсить данные.

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


 Распечатать »
 Правила публикации »
  Написать редактору 
 Рекомендовать » Дата публикации: 28.11.2013 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
Microsoft Office 365 Персональный 32-bit/x64. 1 ПК/MAC + 1 Планшет + 1 Телефон. Все языки. Подписка на 1 год.
Microsoft 365 Apps for business (corporate)
Microsoft Windows Professional 10, Электронный ключ
Microsoft 365 Business Standard (corporate)
Microsoft 365 Business Basic (corporate)
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Безопасность компьютерных сетей и защита информации
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
Программирование на Visual С++
Работа в Windows и новости компании Microsoft
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100