繁体   English   中英

在.xlsx 文件中创建一个新工作表

[英]Create a new sheet in .xlsx file

我正在编写一个代码来自动从 a.csv 中提取我的数据,并以我需要的格式将其加载到 a.xlsx 中。 我想为我使用的每个文件创建一个新工作表并重命名它。 我的代码适用于一个文件,但是当我在我的文件夹中使用它时,它不会创建任何新工作表。

我已经尝试过这个解决方案,但我没有成功使用它。

这是我的代码:

import pandas as pd 
import numpy as np 
import datetime as dt 
from pathlib import Path  


pathList=sorted(Path('.').glob('*.csv'))
name=''
output="output/writer.xlsx"

def reader(file) : 
    return pd.read_csv(file,sep=";")

def extract(file,name): 

    file['dte']=pd.to_datetime(file['dte'],errors='coerce')
    file['year']=pd.DatetimeIndex(file['dte']).year

    df=file.set_index([file.groupby('year').cumcount(),'year']).unstack(1)
    df=df.sort_index(1,level=1)
    df.columns=[f"{x}_{y}" for x,y in df.columns]

    writer = pd.ExcelWriter(output, engine='xlsxwriter')
    df.to_excel(writer,sheet_name=f"{name}")

    writer.save()

    return 

for path in pathList : 
    name=''
    readFile=path
    readName=str(readFile)
    print(readFile)
    for i in readName :
        if i=='.':
            break
        name=name+i
    print(name)
    pathFile=reader(readFile)
    extract(pathFile,f"{name}")

我已经尝试将我的文件名存储在一个列表中,并在循环中创建我的新工作表,但它不允许列表命名它。

如果你想复制它,这里是我文件夹中的两个文件: https://www.mediafire.com/file/mj9u4awael87bhc/ardentes.csv/file https://www.mediafire.com/file/xfliokbasset.3 csv/文件

只需在循环外使用global writerwrite.save()

def extract(file,name): 
    global df
    file['dte']=pd.to_datetime(file['dte'],errors='coerce')
    file['year']=pd.DatetimeIndex(file['dte']).year

    df=file.set_index([file.groupby('year').cumcount(),'year']).unstack(1)
    df=df.sort_index(1,level=1)
    df.columns=[f"{x}_{y}" for x,y in df.columns]

    writer = pd.ExcelWriter(output, engine='xlsxwriter')

    for name in names:
        df.to_excel(writer,sheet_name=name)
 


for path in pathList : 
    name=''
    readFile=path
    readName=str(readFile)
    print(readFile)
    for i in readName :
        if i=='.':
            break
        name=name+i
    print(name)
    pathFile=reader(readFile)
    extract(pathFile,name)
    writer = pd.ExcelWriter(output, engine='xlsxwriter')
    for name in names:
        df.to_excel(writer,sheet_name=name)
writer.save()```

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM