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

18.03.12

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

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

Скачать файлы

Наименование Файл Версия Размер
down.zip
.zip 156,92Kb
114
.zip 156,92Kb 114 Скачать

В настоящее время существует большое количество разнообразных форматов электронных таблиц – 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 в УТ11, КА 2, ERP 2, Розница 2. Дополнительные реквизиты и сведения, характеристики, картинки, цены, остатки

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

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

10560 руб.

29.10.2014    209832    620    524    

438

Загрузка номенклатуры c картинками (несколько потоков одновременно) и сопутствующими данными в базу и любые документы из yml, xls, xlsx, xlsm, ods, ots, csv для УТ 10.3, УТ 11 (все), БП 3, КА 2, ERP 2, УНФ 1.6/3.0, Розница 2

Загрузка и выгрузка в Excel Логистика, склад и ТМЦ Ценообразование, анализ цен Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Платные (руб)

Эволюция не стоит на месте - новая удобная версия функциональной обработки для Вашего бизнеса! Что же Вы получаете? Удобный и интуитивно понятный интерфейс с 3-мя этапами работы. 2 режима - автоматический и ручной. Чтение XLSX, XLSM, CSV, XML/YML форматов без офиса, на любом сервере! Визуальное связывание колонок файла и реквизитов простым перетаскиванием колонок. Создание или обновление номенклатуры с иерархией, характеристик, доп. реквизитов, упаковок, загрузка практически неограниченного количества картинок на одну номенклатуру (с возможностью загрузки в несколько потоков одновременно), с хранением в томах или в базе. Загрузка номенклатуры поставщиков или поиск по их данным номенклатуры. Загрузка доп. реквизитов в характеристики. Загрузка штрихкодов с генерацией новых. Создание элементов справочников и ПВХ "на лету" для выбранных реквизитов. (Обновление от 11.12.2023, версия 9.5 - 9.9)

13200 руб.

20.11.2015    150387    365    375    

499

Распознавание и загрузка сканов в 1С "одним нажатием": УПД, ТОРГ-12, накладные, счета, номенклатура, заказы и т.д.

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

Универсальная программа для распознавания ЛЮБЫХ СКАНОВ ИЛИ ФОТО ТОВАРНЫХ ДОКУМЕНТОВ в 1С. Не требует указания параметров и предварительной настройки. Просто выбираете файл (PDF, JPG, DOC, XLS, HTML и т.д.) выбираете документ 1С и нажимаете кнопку "Распознать и загрузить".

5400 руб.

04.06.2019    101141    296    173    

312

Загрузка данных отчета о реализации товаров из Excel файла СберМегаМаркет

Загрузка и выгрузка в Excel Маркетплейсы Платформа 1С v8.3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление нашей фирмой 3.0 Бухгалтерский учет Управленческий учет Платные (руб)

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

3600 руб.

07.06.2022    14956    78    0    

59

Загрузка документов и номенклатуры из Excel в 1С "одним нажатием": УПД, ТОРГ-12, отчеты маркетплейсов, заказы, счета, прайсы

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

Универсальная обработка для загрузки документов из Excel в 1С. Не требует указания параметров (номера колонок, номер первой строки таблицы и т.д.) и предварительной настройки. Просто выбираете файл Excel, документ 1С и нажимаете кнопку "Загрузить". Обработка сама находит таблицу в файле Excel, необходимые для загрузки данные в ней (номенклатура, количество, НДС, цена, сумма) и загружает ее в 1С. Вместе с номенклатурой может найти контрагента, номер и дату документа, штрих-коды, серии ГТД, страну и т.д. Распознает документы ЛЮБОЙ ФОРМЫ (УПД, ТОРГ-12, заказ, отчет комиссионера и т.д.). Не требует MS Office. Для поиска таблиц используются методы эвристического поиска. Загружает только то, что нужно, т.е. пропускает повторы шапки таблицы, заголовки, промежуточные итоги, подписи и т.д. Содержит модуль работы с электронной почтой и api-загрузчик отчетов о продажах маркетплейсов.

5000 руб.

09.11.2016    214617    921    886    

938

Универсальная загрузка остатков и цен поставщиков в 1С (УТ 11, КА 2, ERP 2.0) из файлов Excel, CSV, XML (YML и CML)

Прайсы Оптовая торговля Розничная торговля Ценообразование, анализ цен Файловый обмен (TXT, XML, DBF), FTP Загрузка и выгрузка в Excel Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Управленческий учет Платные (руб)

Обработка позволяет легко настроить загрузку прайс-листов и остатков поставщиков. Форматы файлов задаются для каждого поставщика отдельно. В настройках предусмотрена возможность гибкой обработки входящих данных (убрать лишние символы, пересчитать цены в другую валюту, сделать произвольную наценку и т.д.).

12000 руб.

23.01.2017    58796    59    48    

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