Python 如何在excel中为文件夹中的每个csv文件创建新工作表
目前,它会覆盖每个excel文件工作表,但我希望每个CSV文件在excel上创建一个新工作表。它会重新写入现有的excel文件,因为excel Writer是在循环中定义的。通过在循环外部定义excel,您只需创建一次excel,并应使用循环向其中添加图纸。下面的代码对我有用Python 如何在excel中为文件夹中的每个csv文件创建新工作表,python,excel,pandas,csv,Python,Excel,Pandas,Csv,目前,它会覆盖每个excel文件工作表,但我希望每个CSV文件在excel上创建一个新工作表。它会重新写入现有的excel文件,因为excel Writer是在循环中定义的。通过在循环外部定义excel,您只需创建一次excel,并应使用循环向其中添加图纸。下面的代码对我有用 import os import pandas as pd from glob import glob import pathlib import fileinput import sys import xlsxwrite
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
我刚刚修改了你的函数。请注意,要将数据帧读入csv,
pd.read_csv()是函数
您使用了pd.DataFrame(csv_文件),我认为这是不正确的读取方式
您将在与文件夹相同的路径中找到output.xlsx
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()