Мне нужно извлечь только табличные данные из некоторых книг Excel с несколькими листами, которые не соответствуют ни одному стандартному формату.Я мог бы написать некоторый код, который перебирает строки и столбцы, чтобы найти таблицу (найти 2 или более смежных ячеек / строк), но надеялся, что может быть лучший путь.Я реализую это в Python (v3.6.5) Pandas.
Примеры сценариев:
Табличные данные, произвольно размещенные на листе - я хочу извлечь только данные 'Col' и 'Row'.
ABCDE пустой бланк пустой бланк пустой бланк пустой бланк пустой бланк пустой бланк Col1 Col2 Col3 Col4 blank пустая строка1 Строка1 Строка1 Строка1 пустая строка2 Строка2 Строка2 Строка2 Бланк Строка3 Строка3 Строка3 Строка3 Строка 3 Бланк Строка4 Строка4 Строка4 Строка4 Бланк Строка5 Строка5 Строка5 Строка5 Строка5 Строка5 Строка5Row6 Row6 blank Row7 Row7 Row7 Row7 blank Row8 Row8 Row8 Row8
Табличные данные начинаются со строк 3-6 - я хочу извлечь только данные 'Col' и 'Row'.
ABCDE blankпустого Col1 Col2 Col3 COL4 Row1 Row1 Row1 Row1 Стр2 Стр2 Стр2 Стр2 Row3 Row3 Row3 Row3 Row4 Row4 Row4 Row4 Row5 Row5 Row5 Row5 Row6 Row6 Row6 Row6 Row7 Row7 Row7 Row7 Row8 Row8 Row8 Row8
1012 * Табличные данные начинаются после того, как объединенный cells-Я хочу перешагнуть через объединенные ячейки и извлечь только данные 'Col' и 'Row'.
ABCDE
Col1 Col2 Col3 Col4
данные в объединенных ячейкахДанные (через D) в объединенных ячейках (A через D)
Строка1 Строка1 Строка1 Строка1
Строка2 Строка2 Строка2 Строка2
Строка3 Строка3 Строка3 Строка3
Строка4 Строка4 Строка4 Строка4
Строка5 Строка 5 Строка 5 Строка 5 Строка 51022 * Row6 Row6 Row6 Row6
Row7 Row7 Row7 Row7
Row8 Row8 Row8 Row8
ABCDE некоторые данные
некоторые данные
некоторые данные
Col1 Col2 Col3 Col4
Row1Строка1 Строка1 Строка1
Строка2 Строка2 Строка2 Строка2
Строка3 Строка3 Строка3 Строка3
Строка4 Строка4 Строка4 Строка4
Строка5 Строка5 Строка5 Строка5
Строка6 Строка6 Строка6 Строка6
Строка * Строка 7 * Строка 7 * Позиция 7Row8 Row8
РЕДАКТИРОВАТЬ Это то, что я сделал далеко:
import pandas as pd
import os
directory = '[path]'
for filename in os.listdir(directory):
if filename.endswith(".xlsx") or filename.endswith(".xlsm") or filename.endswith(".xls"):
df = pd.DataFrame()
xl = pd.ExcelFile(filename)
# print xl.sheet_names
sheets = xl.sheet_names
print()
print(filename)
for sheet in sheets:
df = pd.read_excel(filename, sheet)
#TO DO: extract tabular data from df