#python #openpyxl
#python #openpyxl
Вопрос:
В папке у меня есть сотни файлов Excel с данными. В каждом файле Excel первая строка заполняется некоторым текстом, и строка объединяется. Чтобы отключить первую строку, я использовал приведенный ниже код python из stack overflow для одной книги Excel. Это сработало нормально. Теперь я хочу отменить объединение всей книги Excel в папке. Как я могу отредактировать приведенный ниже код? Пожалуйста, помогите мне.
from openpyxl import load_workbook
from openpyxl.utils.cell import range_boundaries
wb = load_workbook(filename = 'Batch.xlsx')
for st_name in wb.sheetnames:
st = wb[st_name]
mcr_coord_list = [mcr.coord for mcr in st.merged_cells.ranges]
for mcr in mcr_coord_list:
min_col, min_row, max_col, max_row = range_boundaries(mcr)
top_left_cell_value = st.cell(row=min_row, column=min_col).value
st.unmerge_cells(mcr)
for row in st.iter_rows(min_col=min_col, min_row=min_row, max_col=max_col, max_row=max_row):
for cell in row:
cell.value = top_left_cell_value
wb.save('Batch.xlsx')
[1]: https://i.stack.imgur.com/189xh.png
Ответ №1:
Вы можете использовать glob для создания списка файлов, а затем зациклить их, используя свой код:
from openpyxl import load_workbook
from openpyxl.utils.cell import range_boundaries
from glob import glob
def process_xlsx(filepath):
wb = load_workbook(filename = filepath)
for st_name in wb.sheetnames:
st = wb[st_name]
mcr_coord_list = [mcr.coord for mcr in st.merged_cells.ranges]
for mcr in mcr_coord_list:
min_col, min_row, max_col, max_row = range_boundaries(mcr)
top_left_cell_value = st.cell(row=min_row, column=min_col).value
st.unmerge_cells(mcr)
for row in st.iter_rows(min_col=min_col, min_row=min_row, max_col=max_col, max_row=max_row):
for cell in row:
cell.value = top_left_cell_value
wb.save(filepath)
for filepath in glob("./*.xlsx"):
process_xlsx(filepath)