簡體   English   中英

如何為文件夾中的每個 csv 文件在 excel 中創建一個新工作表

[英]How do I create a new sheet in excel for every csv file I have in my folder

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 上制作一個新表

它重寫現有的 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() 

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

我剛剛修改了你的 function。請注意,要將你的 Dataframe 讀入 csv,pd.read_csv() 就是 function。

您使用了 pd.DataFrame(csv_file),我認為這是不正確的閱讀方式。

您會在與文件夾相同的路徑中找到 output.xlsx。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM