说明:本文用于记录项目中遇到的处理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')
记得保存工作簿!!