我需要将大约30个excel工作簿组合成一个。每个工作簿都有可变数量的工作表,但我需要从每个工作簿中组合的工作表被称为"输出"并且此工作表中列的格式是一致的。
我需要从第一个文件导入输出表,然后附加剩余的文件并忽略标题行。
我试图用glob / pandas做这件事无济于事。
答案 0 :(得分:2)
这可能会被投票,因为这不是Python的答案,但老实说,我不会使用Python来完成这类任务。我认为你最好安装下面的AddIn,并将其用于工作。
https://www.rondebruin.nl/win/addins/rdbmerge.htm
单击“合并文件位置选择中文件夹中的所有文件”,然后单击“使用工作表名称”=“输出”,最后,我认为您需要“第一个单元格”。祝你好运!
答案 1 :(得分:1)
您可以使用openpyxl。这是代码草图:
from openpyxl import load_workbook
compiled_wb = load_workbook(filename = 'yourfile1.xlsx')
compiled_ws = compiled['Output']
for i in range(1, 30):
wb = load_workbook(filename = 'yourfile{}.xlsx'.format(i))
ws = wb['Output']
compiled_ws.append(ws.rows()[1:]) # ignore row 0
compiled_wb.save('compiled.xlsx')
答案 2 :(得分:1)
克林顿所示的方法c。布朗利在Foundations for Analytics with Python:
在shell中执行,指示包含excel文件的文件夹的路径(确保定义all_workbooks的参数是正确的),然后按如下所示输出excel输出文件:
python script.py <the /path/ to/ excel folder/> < your/ final/output.xlsx>
script.py:
import pandas as pd
import sys
import os
import glob
input_path = sys.argv[1]
output_file = sys.argv[2]
all_workbooks = glob.glob(os.path.join(input_file, '*.xlsx'))
all_df = []
for workbook in all_workbooks:
all_worksheets = pd.read_excel(workbook, sheetname='Output', index_col=None)
for worksheet, data in all_worksheets.items:
all_df.append(data)
data_concatenated = pd.concat(all_df, axis=0, ignore_index=True)
writer = pd.ExcelWriter(output_file)
data_concatenated.to_excel(writer, sheetname='concatenated_Output', index=False)
writer.save()