ExcelWriter在写入时覆盖工作表

问题描述 投票:2回答:1

该程序应该获取单个工作表的内容并将它们放入一个excel工作簿中。它几乎就是这样,但它被覆盖而不是将新表附加到最终工作簿中。我读到大熊猫excel写手是这样的方式,任何想法为什么它有这种行为?

import xlwt, csv, os
from openpyxl import load_workbook
import pandas as pd
from pandas import ExcelWriter

csv_folder = r'C:\Users\Me\Desktop\Test_Folder\\'

for fil in os.listdir(csv_folder):

    if '.xlsx' not in fil:
        continue
    else:
        pass

    df = pd.read_excel(csv_folder+fil, encoding = 'utf8')

    file_name = fil.replace('.xlsx','')

    writer = pd.ExcelWriter('condensed_output.xlsx', engine = 'xlsxwriter')
    df.to_excel(writer, sheet_name = file_name)
    writer.save()
    #writer.close()
python pandas append xlsxwriter
1个回答
1
投票

确保writer.save()在循环之外。还要注意工作表名称的字符限制,因此如果文件名在某一点上相同,则存在以这种方式写入工作表名称的风险。

import xlwt, csv, os
from openpyxl import load_workbook
import pandas as pd
from pandas import ExcelWriter

csv_folder = r'C:\Users\Me\Desktop\Test_Folder\\'
writer = pd.ExcelWriter('condensed_output.xlsx', engine = 'xlsxwriter')
for fil in os.listdir(csv_folder):

    if '.xlsx' not in fil:
        continue
    else:
        pass

    df = pd.read_excel(csv_folder+fil, encoding = 'utf8')

    file_name = fil.replace('.xlsx','')


    df.to_excel(writer, sheet_name = file_name) 

writer.save() #make sure this is outside of the loop. 

ETA:在循环之外建立作者

© www.soinside.com 2019 - 2024. All rights reserved.