说明:本文用于记录项目中遇到的处理excel文件的事情,包括excel和dataFrame格式转换、判断文件是否存在、清空文件内容、创建文件、删除文件、文件保存、将数据保存为Sheet{i}、删除Sheet。

一、判断文件是否存在、创建、删除文件

这里主要用到os、openpyxl库。

import pandas as pd
from openpyxl import load_workbook, Workbook

''' 文件删除 '''
if os.path.exists(xlsx_file_path):
    os.remove(xlsx_file_path)

''' 判断文件是否存在 '''
if os.path.exists(xlsx_file_path):
    print(f"文件 {xlsx_file_path} 存在.")
    ''' 清空文件内容 '''
    workbook = load_workbook(xlsx_file_path)

    # 遍历所有 sheet,并清空内容
    for sheet_name in workbook.sheetnames:
        sheet = workbook[sheet_name]
        for row in sheet.iter_rows():
            for cell in row:
                cell.value = None

    # 保存修改后的 Excel 文件
    workbook.save(xlsx_file_path)

else:
    ''' 创建一个新的、空的xlsx文件 '''
    # 创建一个新的工作簿(xlsx文件)
    workbook = Workbook()
    # 保存工作簿,即创建新的xlsx文件
    workbook.save(xlsx_file_path)
    print(f"文件 {xlsx_file_path} 新建成功.")

注意,新的、空的xlsx文件的表格名称为Sheet,和我们鼠标右键创建的excel不一样(名称为Sheet1)。

二、Excel与DataFrame转换

主要通过Pandas读取Excel文件内容。下面展示xlsx和csv类型的文件读取方法。

import pandas as pd

df = pd.read_csv(csv_file_path)     # 读取csv为dataFrame格式
print(df.head())    # 显示前几行内容

df = pd.read_csv(csv_file_path)     # 读取csv为dataFrame格式
print(df.head())    # 显示前几行内容

将DataFrame类型的数据保存为Excel。

df = ...

# 保存数据为xlsx,无列索引和表头
df.to_excel(xlsx_file_path, index=False, header= False)

# 保存数据为csv,无列索引和表头
df.to_csv(csv_file_path,index=False, header= False)

三、将数据保存为同一个xlsx文件的不同Sheet

这里CSDN上有很多方法,但是假如有这样一个情况:

每次循环我会产生一个文件,该文件会覆盖掉上一次生成的文件,我要怎么把每一份文件记录在同一个xlsx文件的不同sheet下呢?

CSDN的帖子很多都是不同数据保存在不同sheet下,不存在之前的数据被覆盖的问题。如果遇到这种情况,可以使用追加的方式进行写入。

# 假设循环N次
for i in range(N):
    with pd.ExcelWriter(xlsx_file_path, engine='openpyxl', mode='a') as writer:
        df.to_excel(writer, index=False, header= False, sheet_name = 'Sheet'+str(i))
        # 产生的Sheet为 Sheet1 ~ SheetN

四、删除Sheet

前面提到了,使用openpyxl创建新的xlsx文件时,会产生一个叫"Sheet"的表格,假如我们没有对他添加任何数据,而是以Sheet{i}的方式添加数据,那该表格就会多余,我们就要想办法删掉他。

from openpyxl import load_workbook
''' 删除空表头Sheet '''
sheet_name1 = 'Sheet'

# 载入工作簿
workbook = load_workbook('xlsx_file_path.xlsx')

# 删除目标Sheet
worksheet = workbook[sheet_name1]
workbook.remove(worksheet)

# 保存已做删除处理的工作簿
workbook.save('xlsx_file_pat.xlsx')

记得保存工作簿!!

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐