Парсер таблиц Excel

Задача: 

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

Описание: 

Этот парсер опубликован как пример использования парсера для обработки файлов, в частности, для парсинга таблиц Excel.

В качестве основы был использован парсер для перебора всех файлов в папке, но с незначительным отличием: если при парсинге файлов других типов (текстовых / Word / PDF) нам достаточно только считать данные из файла (файл временно открывается, данные считываются, и файл сразу закрывается), то при загрузке данных из файлов Excel, обрабатываемый файл должен быть открыт всё то время, пока из него считываются данные в разные столбцы.
Подробнее об этом — в инструкции по парсингу файлов Excel

Для извлечения данных с листа используется многофункциональное действие «Поиск ячеек на листе».
Оно позволяет найти на листе нужные ячейки, ориентируясь на значения соседних ячеек (например, найти на листе ячейку с заданным текстом, отступить от неё вниз/вправо/влево/вверх на заданное количество строк/столбцов, и из этой ячейки считать значение / ссылку / примечание)

Поскольку некоторые из обрабатываемых файлов могут отличаться по структуре (присутствует первый пустой столбец), необходима дополнительная коррекция файла перед обработкой (при условии, что в первом столбце меньше 5 заполненных ячеек, надо значения ячеек первого столбца перенести во второй столбец, а первый столбец листа целиком удалить). Это тоже можно сделать парсером, — в настройках этого парсера присутствует набор действий «Коррекция файла», содержащий 5 команд:

 

Действие Параметр Значение
Поиск ячеек на листе Адрес ячейки / диапазона для поиска a1:a15
Маска поиска ?*
Смещение от найденного 0;0
Действие для целевой ячейки GetValue
Задаваемое значение  
Маска найденного значения *
Заменять пустые значения на  
Количество элементов массива Сохранить результат в переменную  
Использовать новое значение да
Проверка на выполнение условия Режим проверки больше
Значение для сравнения 5
Действие при выполнении условия Новое значение, и остановить
Параметр действия Коррекция не требуется (первый столбец не пустой)
Проверять другое значение нет
Другое проверяемое значение  
Поиск ячеек на листе Адрес ячейки / диапазона для поиска a:a
Маска поиска ?*
Смещение от найденного 0;1
Действие для целевой ячейки SetValue
Задаваемое значение {FoundCell.Text} {TargetCell.Text}
Маска найденного значения *
Заменять пустые значения на  
Действия со столбцами Столбцы 1
Действие для выбранных столбцов Удалить
Параметр действия  

Комментарии

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
CAPTCHA
Подтвердите, пожалуйста, что вы - человек:
           ____    ___    _       __     _     
__ _ / ___| / _ \ | | __ / /_ | |__
/ _` | | | _ | | | | | |/ / | '_ \ | '_ \
| (_| | | |_| | | |_| | | < | (_) | | | | |
\__, | \____| \__\_\ |_|\_\ \___/ |_| |_|
|_|
Введите код, изображенный в стиле ASCII-арт.