Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用python将excel工作簿表合并为一个_Python_Excel_Pandas - Fatal编程技术网

使用python将excel工作簿表合并为一个

使用python将excel工作簿表合并为一个,python,excel,pandas,Python,Excel,Pandas,我大约有30本excel工作簿需要合并成一本。每个工作簿都有不同数量的工作表,但我需要从每个工作簿中组合的工作表称为“输出”,并且此工作表中的列格式是一致的 我需要从第一个文件导入输出表,然后附加其余文件并忽略标题行 我曾尝试使用glob/pandas来实现这一点,但没有效果 你可以用。下面是代码的草图: from openpyxl import load_workbook compiled_wb = load_workbook(filename = 'yourfile1.xlsx') com

我大约有30本excel工作簿需要合并成一本。每个工作簿都有不同数量的工作表,但我需要从每个工作簿中组合的工作表称为“输出”,并且此工作表中的列格式是一致的

我需要从第一个文件导入输出表,然后附加其余文件并忽略标题行

我曾尝试使用glob/pandas来实现这一点,但没有效果

你可以用。下面是代码的草图:

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')

克林顿c。布朗利在:

在shell中执行,指示包含excel文件的文件夹的路径(确保定义所有_工作簿的参数正确),然后按如下所示执行excel输出文件:

python script.py <the /path/ to/ excel folder/> < your/ final/output.xlsx> 

这可能会被否决,因为这不是Python的答案,但老实说,我不会将Python用于此类任务。我认为您最好安装下面的插件,并将其用于工作


单击“在文件位置选择中合并文件夹中的所有文件”,然后单击“使用工作表名称”=“输出”,最后,我想您需要“第一个单元格”。祝你好运

给我们看看你试过的代码。pandas使用pd.concat()应该没问题。试试这个:
pd.concat(pd.read\u excel(i,sheet\u name='output')for i in os.listdir(“.”),如果i.endswith('xlsx'))
Script错误:“我在pd.concat上需要的是“all\u worksheet.items()”而不是“all\u worksheet.items”和axis=1。“sheetname”在to_excel(至少是最新版本)中必须是“sheet_name”,在read_excel中应该是“sheet_name”,以避免出现警告。在@OutcastSource解决方案的帮助下,这就像一个符咒,还安装了xlrd包,但它只是将所有东西在轴=1上并排放置,在轴=0上彼此下方。我需要它,这样它可以复制粘贴工作表,然后转到最下面一行,然后复制粘贴同一文件夹中不同工作簿中的同一工作表。那么,如何调整此代码以执行所需的功能??
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()