首页 > 解决方案 > 如何在 excel 中为文件夹中的每个 csv 文件创建一个新工作表

问题描述

import os
import pandas as pd
from glob import glob
import pathlib
import fileinput
import sys
import xlsxwriter

def csv_folder_input(folder):
    path = sys.path[0]
    path = path + "/" + folder
    os.chdir(path)
    counter = 1
    for filename in os.listdir(path):
        if filename.endswith(".csv"):
            with open(filename, 'r') as csvfile:
                df = pd.DataFrame(csvfile)
                with pd.ExcelWriter('output.xlsx') as writer:
                    df.to_excel(writer, sheet_name='sheet '+str(counter), index=False)
                    writer.save()
                    counter = counter + 1

目前它覆盖了每个 excel 文件表,但我希望每个 CSV 文件在 excel 上创建一个新表

标签: pythonexcelpandascsv

解决方案


它重写了现有的 excel 文件,因为 ExcelWriter 是在循环内定义的。您只需通过在循环外部定义它来创建一个 excel,并且应该使用循环向它们添加工作表。下面的代码对我有用

def csv_folder_input(folder):
path = sys.path[0]
path = path + "/" + folder
os.chdir(path)
counter = 1
with pd.ExcelWriter('output.xlsx') as writer:
    for filename in os.listdir(path):
        if filename.endswith(".csv"):
            with open(filename, 'r') as csvfile:
                df = pd.DataFrame(csvfile)
            df.to_excel(writer, sheet_name=filename, index=False)
            print(f"Added sheet to excel: {filename}")
            counter = counter + 1
writer.save()
writer.close() 

  

推荐阅读