【问题标题】:Append multiple excel files sheet by sheet & column by column in python在python中逐页逐列附加多个excel文件
【发布时间】:2020-12-31 22:09:16
【问题描述】:

请建议如何追加多个excel文件逐页逐列,其中所有文件在python3中具有完全相同的工作表和列名

                 **Input**                                **Output**

File name: abc.xlsx       File name: xyz.xlsx       File name: appended.xlsx
Sheet: One                Sheet: One                Sheet: One
Column: A & B             Column: A & B             Column: A & B
Rows: 100                 Rows: 100                 Rows: **200**
.                         .                         .
.                         .                         .
.                         .                         .
.                         .                         .
.                         .                         .
.                         .                         .
Sheet: Ten                Sheet: Ten                Sheet: Ten
Column: A & B             Column: A & B             Column: A & B
Rows: 100                 Rows: 100                 Rows: **200**

【问题讨论】:

    标签: python excel append wise


    【解决方案1】:

    您可以为此目的使用 python openpyxl 模块。

    from openpyxl import load_workbook
    

    我不知道您为什么需要第三个文件。您可以将文件附加到另一个文件。 首先,读取一个包含以下内容的文件:

    first_file_wb = load_workbook(/file_path, read_only=True) # wb stands for workbook
    for sheet_name in first_file_wb.sheetnames: # You can iterate through sheets with sheetnames
        first_file_ws = first_file_wb[sheet_name]    # ws stands for worksheet
        # after this you have access to specific sheet.
        for row in first_file_ws.iter_rows():
            for cell in row:
                print('%s: cell.value=%s' % (cell, cell.value)) # You can write this values to a dict sheet by sheet.
                ...
    

    处理完这些值后,您可以将其附加到其他文件中。

    second_file_wb = load_workbook(/file_path)
    for sheet_name in second_file_wb.sheetnames:
        second_file_ws = first_file_wb[sheet_name]    # ws stands for worksheet
        last_row = second_file_ws.max_row # This will give you last row number of the file
        # At this point, you can append the values after that row.
        for key,value in your_dict_from_first_file.items():
            # I assume key is a counter to values but if it is not, you can create a counter here. Just be sure <key+max> gives first available row to append.
            second_file_ws.cell(row=key+max, column={column from dict}, value={value})
            # or 
            second_file_ws.cell(row=key+max, column={column_number_from_dict}).value = value
    

    【讨论】:

    • 非常感谢@İbrahim Akar
    猜你喜欢
    • 2017-04-11
    • 1970-01-01
    • 2022-09-23
    • 2016-05-06
    • 1970-01-01
    • 2021-07-14
    • 2021-09-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多