Объедините несколько файлов xlsx, которые содержат общие имена листов - PullRequest
0 голосов
/ 31 мая 2018

У меня есть различное количество входных документов .xlsx, которые содержат 12 листов (все листы имеют одинаковое имя в каждом документе .xlsx).Мне нужно объединить их в один документ .xlsx, сохранив при этом имена исходных листов, но данные всех документов для каждого листа добавляются к исходным листам.

Например, см. Мой исходный вывод:

enter image description here

И желаемый вывод:

enter image description here

Это мой текущий код:

def combine_sheets(self, inputFiles):
    logging.info('combining input files to one spreadsheet')

    '''
    create a pandas excel writer using xlsxwriter as the engine
    pandas and xlsxwriter will need to be installed on server running script
    '''
    outputFile = os.path.join(self.processingDir, 'combined_ncoa_report.xlsx')
    writer = pandas.ExcelWriter(outputFile, engine='openpyxl')

    df = pandas.DataFrame()

    for inputFile in inputFiles:
        logging.info('reading spreadsheet %s' % (os.path.split(inputFile)[-1]))

        # read input xlsx to pandas dataframe
        book = load_workbook(inputFile)
        writer.book = book
        writer.sheets = {ws.title: ws for ws in book.worksheets}

        for sheetname in writer.sheets:
            df.to_excel(writer,sheet_name=sheetname, startrow=writer.sheets[sheetname].max_row, index = False,header= False)

        writer.save()

    # closing writer
    writer.close()

Функция создает файл, но каждый раз перезаписывает содержимое листа вместо добавления.Я не уверен, что мне не хватает.

...