Чтение и анализ табличных документов

Загрузка данных из файлов табличных документов, Microsoft Excel, Office Open XML

Универсальная система чтения и анализа данных из файлов офисных табличных документов, Microsoft Excel, Office Open XML по настроенным шаблонам.

В систему чтения табличных документов передаем ссылку на файл и шаблон чтения данных из табличного документа. В ответ получаем обработанный список объектов (структур) данных, либо сообщение об ошибке, если файл не соответствует переданному шаблону.

В начало

Процесс загрузки

Распространенная задача  загрузить какие то данные из таблиц MS Excel в учетную систему.

Такая задача делится на несколько этапов:

  1. Чтение файла, получить данные из файла, которые возможно обработать в системе;
  2. Общий анализ данных. Проверить наличие необходимых колонок, прочитать данные в таблицу, удалить строки не подходящие по условия, обработать значения, получить иерархию;
  3. Индивидуальны анализ данных. Проверить корректность данных в соответствии с логикой использования данных, добавить дополнительные данные из учетной системы;
  4. Запись данных в учетную систему.

За 1 и 2 этапы отвечает данная подсистема. Что примерно 40 до 90% работы для задач подобного типа.

Разработчику остается реализовать 3 и 4 этапы, при этом 4 этап записи данных может быть общий, для записи данных из различных источников (не только табличных документов), реализованный в Сервисных модулях, с записью данных через универсальную модель объекта.

В начало

Чтение файла

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

Средствами 1С, встроенные в платформу функции чтения файлов MS Excel.

Плюсы: работает быстро, читает форматирование (используется для анализа иерархии), не требует установленного офисного пакета, не требует установки ODBC драйвера. Минусы: бывают сбои при чтении некорректных файлов, обычно такие формируют сторонние системы, без использования программ офисного пакета.

ADODB чтение файла, через ODBC драйвер.

Плюсы: работает быстро, читает большинство не корректных файлов, не требует установленного офисного пакета.  Минусы: есть только данные без форматирования, требует установки ODBC драйвера.

Excel.Application, получить данные из файла через программный интерфейс Microsoft Office.

Плюсы: читает форматирование, работает с некорректными файлами. Минусы: медленный, требует установленного Microsoft Office на сервере, вместе с учетной системой.

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

  1. В большинстве случаев подходит Средствами 1С.
  2. Если файл не корректный придется использовать ADODB при условии, что нет необходимости в анализе иерархии данных.
  3. Если файл не корректный и необходима иерархия данных, только Excel.Application.
В начало

Общий анализ

Задачи общего анализа табличного документа.

  1. Найти область с данными в табличном документе. Определить номера загружаемых колонок и первую строку данных. Не обязательный этап, номера колонок и первая строка данных могут быть заданы в шаблоне, готовыми номерами, а не фразами поиска;
  2. Проверить подходит ли строка под заданные критерии, если не подходит пропустить;
  3. Проверить является ли строка группой, либо объектом данных, если в шаблоне настроен анализ групп, и группы расположены в строках:
  4. Если группа, добавить группу в список;
  5. Если объект, добавить объект данных в список;
  6. Преобразовать значения строки, по выбранным в шаблоне правилам обработки текста;
  7. Конвертировать значения в число, если такой признак выбран в шаблоне.

После чтения и общего анализа система возвращает для дальнейшей обработки и записи данных в систему:

  1. Список колонок, с ключами и заголовками;
  2. Список объектов, со именованными свойствами соответствующими ключам заголовков, плюс служебные свойства:
    1. Идентификатор группы;
    2. Номер строки в файле (может пригодиться для записи данных);
  3. Список групп с иерархией, либо без в зависимости от настроек шаблона.

Важно! Список объектов с именованными свойствами, а не номерами колонок из исходного файла. Что позволяет стандартизировать список объектов. Независимо от структуры исходного файла, на выходе всегда список стандартных объектов с именами свойств прописанными в шаблоне.

В начало

Используемые компоненты

Компонент Подсистема Документация
Обработка текста Ядро системы Ссылка на документацию
Файловый каталог Расширения Ссылка на документацию