Проблема 1:
Сейчас парсер получает данные из первого (активного) листа xlsx файла.
Не обработаны случаи:
Файл содержит несколько листов (worksheet) с данными и все их нужно обработать.
Файл содержит несколько листов и данные находятся на каком-то конкретном листе.
Файл содержит несколько листов и не все они с данными. Нужно обработать несколько листов
Проблема 2:
Сейчас заголовок таблицы ищется в строке header_row_index страницы.
Не обработаны случаи:
header_row_index изначально неизвестен. Допустим в файле сначала идет шапка документа произвольной высоты, а дальше таблица с данными, которые нужно получить.
на разных страницах документа заголовок таблицы находится на разных строках
для разных колонок заголовок находится на разных стоках (заголовок многострочный)
Проблема 3:
Под таблицей с данными может быть колонтитул (например ячейки с местами для подписи).
Не решена проблема определения последней строки с данными.
Сейчас можно или указать last_row_index, или завязаться на наличие значение в какой-то из колонок и делать SkipRow для всех строк, у которых в этой ячейке нет данных.
Кажется, что этого мало.
Решение
Предлагаю ввести понятия:
Стратегия поиска листа с данными
Стратегия поиска заголовка таблицы с данными
Стратегия поиска первой и последней строки с данными.
Стратегия поиска листа с данными
Актуально только для xlsx документов
активный лист (default) - парсер получает данные с активного листа файла.
все листы файла - парсер получает данные со всех листов файла
список листов - указываем названия или индексы листов, парсер собирает данные только из них
все листы, на которых были найдены таблицы с данными - перебираем все листы, проверяем наличие правильного заголовка таблицы (подумать на какие еще признаки можно опереться)
Стратегия поиска заголовка таблицы с данными
по header_row_index (default) - данные лежат в конкретной строке, индекс которой заранее известен
первая строка, значения ячеек в которой совпадают с ожидаемым заголовком таблицы - перербираем построчно файл, каждую строку сравниваем с ожидаемым заголовком. Первое совпадение - строка с заголовком таблицы
Стратегия поиска первой строки с данными
по first_data_row_index - данные лежат начиная со строки, индекс которой заранее известен
первая непустая строка после заголовка
n строка после заголовка
первая строка удовлетворяющая условию
Стратегия поиска последней строки с данными
конец файла - все строки до конца файла содержат данные
Проблема 1: Сейчас парсер получает данные из первого (активного) листа xlsx файла.
Не обработаны случаи:
Проблема 2: Сейчас заголовок таблицы ищется в строке header_row_index страницы.
Не обработаны случаи:
Проблема 3: Под таблицей с данными может быть колонтитул (например ячейки с местами для подписи).
Не решена проблема определения последней строки с данными. Сейчас можно или указать last_row_index, или завязаться на наличие значение в какой-то из колонок и делать SkipRow для всех строк, у которых в этой ячейке нет данных. Кажется, что этого мало.
Решение Предлагаю ввести понятия:
Стратегия поиска листа с данными
Актуально только для xlsx документов
Стратегия поиска заголовка таблицы с данными
Стратегия поиска первой строки с данными
Стратегия поиска последней строки с данными