Чтец электронных таблиц (Excel)

18.03.12

Интеграция - Загрузка и выгрузка в Excel

Три метода чтения объектов - Excel.Application, ADO, ComSafeArray. Все методы в одной объектно-ориентированной оболочке, что позволяет использовать их совершенно одинаково.

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
down.zip
.zip 156,92Kb
115 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

В настоящее время существует большое количество разнообразных форматов электронных таблиц – Excel, StarOffice и прочие.

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

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

В моделировании чтения электронных таблиц используется объектно-ориентированный подход – в базовом классе «Чтец электронных таблиц» описывается общее поведение всех электронных таблиц, а в классах-наследниках описываются особенности реализации тех или иных электронных таблиц.

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

В настоящее время реализованы следующие способы доступа к файлам Excel:

  • EXCEL – классическое подключение к Excel через COM-объект «Excel.Application»:

o   Медленное создание приложения для доступа к данным

o   Возможны зависшие в памяти сессии

o   Медленное чтение данных – по одной ячейке

  • EXCELADO – подключение к Excel через ADO

o   Быстрое соединение с источником данных

o   Ограничения по числу колонок – большие листы не читаются (важно!)

o   Все данные получаются в виде строки, без поддержки типа, числа и дата конвертируются по установленным на компьютере локальным настройкам

o   Данные загружаются из всего диапазона сразу.

o   Достаточно быстрое чтение данных

  • EXCELCSA – классическое подключение к Excel через COM-объект «Excel.Application», но чтение данных из всего диапазона сразу через ComSafeArray:

o   Медленное создание приложения для доступа к данным

o   Возможны зависшие в памяти сессии

o   Достаточно эффективное, сравнимое с ADO по скорости чтение данных, всего диапазона сразу.


Ничто не мешает написать драйвер такого же формата и для таблиц OpenOffice, файлам DBF и т.п.

На практике у меня была задача чтения из порядка 100 файлов Excelразличных таблиц. Все методы показали примерно одинаковую производительность, т.к. данные читались не из всех ячеек, поэтому стандартное соединение EXCEL работало не хуже чем EXCELCSA. Проверить EXCELADO на этой задаче не получилось, т.к. в листах было много колонок, а с такими листами EXCELADO работать не умеет.

На уровне базового класса поддерживается чтение не всего листа, а только указанного прямоугольного диапазона.

Задача показала необходимость выделения кода для создания соединения. Т.к. в вариантах EXCEL и EXCELCSA на создание соединения тратится до 50% времени, можно создать соединение, а затем в цикле не закрывая соединения, читать файлы, и только в конце закрыть соединение.

Реализация базового класса

Методы:

  • «Данные» - получает данные в виде таблицы значений
  • «Значение» - получает данные из конкретной ячейки

Реализация классов-наследников

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

Методы «Открыть/Закрыть» открывают и закрывают книгу, а «Открыть соединение/Закрыть» соединение открывают и закрывают соединение.

Состав пакета

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

Обработка «Тест чтеца электронных таблиц» демонстрирует, как писать код для работы с обработкой.

Файл, на котором можно протестировать рамочное чтение и вообще чтение из Excel: «R:\1с.Инструменты\Чтец электронных таблиц\Простой файл склад-товар-контрагент-количество.xls»

Документация в случае интереса к разработке будет дописана, и детализирована.

Планы на будущее

Пока что через ADO не поддерживается преобразование даты из строки в дату. Преобразование строки в число поддерживается.

Планируется написать класс для чтения OpenOffice.

Вступайте в нашу телеграмм-группу Инфостарт

См. также

Загрузка и выгрузка в Excel Маркетплейсы Программист Бухгалтер Пользователь 1С:Предприятие 8 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Бухгалтерский учет Управленческий учет Платные (руб)

Реальный помощник, с помощью которого Вы преобразуете необходимые документы для Wildberries, OZON, ЯндексМаркет, Мегамаркет, Aliexpress, Детский мир, Магнит Маркет (быв.МагнитЭкспресс), Лемана про, ЭНФАНТА (Акушерство), ЛаМода, Летуаль, Твой дом, Золотое Яблоко, Каспи, Авито, Аптеки+ в документы "Отчет комиссионера (агента) о продажах" и другие. Работает в 1С:БП 3.0, 1С:БП 3.0 КОРП, 1С:УТ 11, 1С:УНФ, 1С:ERP.

5490 руб.

12.08.2021    45913    579    71    

218

Загрузка и выгрузка в Excel Розничная торговля Логистика, склад и ТМЦ Ценообразование, анализ цен Прайсы Системный администратор Программист 1С:Предприятие 8 1С:Комплексная автоматизация 1.х 1С:Розница 2 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Управленческий учет Платные (руб)

Загрузка номенклатуры из файлов Excel (xls, xlsx, ods, csv, mxl) в УТ11, КА 2, ERP 2, Розница 2. Задействованы все возможности конфигурации - заполнение реквизитов номенклатуры, дополнительных реквизитов и сведений, характеристики, доп.реквизиты и сведения характеристик. Дополнительные обработки для расширения возможностей.

12444 руб.

29.10.2014    232625    750    534    

498

Загрузка и выгрузка в Excel Маркетплейсы Программист Бухгалтер Пользователь 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Бухгалтерский учет Управленческий учет Платные (руб)

Загружает данные из Акта приемки товара от ООО «Вайлдберриз», полученный из личного кабинета в формате *.xlsx или API в документ "Реализация (акты, накладные, УПД)" для конфигурации: Бухгалтерия предприятия, редакция 3.0, в документ "Реализация товаров и услуг" для Управление торговлей, редакция 11; Комплексная автоматизация 2; ERP 2 Управление предприятием и в документ "Расходная накладная" для Управление нашей фирмой 3.0; Розница 3.0

6100 руб.

24.01.2021    24896    122    0    

63

Загрузка и выгрузка в Excel Программист Бухгалтер Пользователь 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Розничная и сетевая торговля (FMCG) Управленческий учет Платные (руб)

Загрузка данных отчета о реализации товаров из сервиса Lamoda «Ламода» для конфигурации: 1С:Бухгалтерия предприятия, редакция 3.0; 1C:Управление торговлей, редакция 11 и 1C:Управление нашей фирмой, редакция 3.0 в документ "Отчет комиссионера (агента) о продажах".

6100 руб.

01.03.2021    12516    71    0    

29
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. sstar90 19.03.12 10:19 Сейчас в теме
fixin, вещь полезная, может стоит включить в Библиотеку продвинутых функций ?
Передал путь к файлу и получил на выходе результат.
2. fixin 4337 19.03.12 10:47 Сейчас в теме
(1) еще должным образом не формализировано. Вот когда для стар-офиса напишут драйвер на 1с в моем формате, тогда можно включать.
3. daho 8 22.03.12 07:15 Сейчас в теме
мда... интересно...
4. electronik 26.03.12 18:29 Сейчас в теме
Интересно прочитать не больше
5. fixin 4337 26.03.12 18:35 Сейчас в теме
(4) еще интересно потестировать на скорость. ;-)
6. Genneral 16.04.12 18:37 Сейчас в теме
Очень интересная тема, на практике получается что метод чтения скорее зависит от поставленной задачи,кому типизацию кому скорость, а кому и дописать в открытый файл надо.Какое ограничение по колонкам в ADO, кто подскажет ?
7. AlexO 136 15.06.12 11:46 Сейчас в теме
а почему кода нет? это минус.
Такая статья должна обязательно содержать код примеров.
8. fixin 4337 15.06.12 13:34 Сейчас в теме
(7) код в приложенном файле. Публиковать его в статье нет смысла.
Для отправки сообщения требуется регистрация/авторизация