首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >ExcelWriter在写入时覆盖工作表

ExcelWriter在写入时覆盖工作表
EN

Stack Overflow用户
提问于 2019-02-28 03:08:08
回答 1查看 1.6K关注 0票数 4

此程序应将各个工作表的内容放入一个excel工作簿中。它几乎做到了这一点,但它是覆盖而不是将新的工作表添加到最终的工作簿中。我读到pandas excel writer是这样做的,你知道为什么它会有这样的行为吗?

代码语言:javascript
复制
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()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-28 03:30:03

确保writer.save()在循环之外。还要注意sheetname的字符限制,因此如果文件名在某一点之前是相同的,那么您也有可能以这种方式覆盖sheetname。

代码语言:javascript
复制
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:也在循环之外建立编写器

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54912792

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档