使用Python进行Excel数据处理和样式设置 📊
在这篇技术博客中,我们将详细讲解如何使用Python的pandas库和openpyxl模块来读取、筛选Excel数据并设置单元格样式。下面是一段完整的代码示例,包含了详细的注释。
# 导入pandas模块,用于数据分析和处理 🐼
import pandas as pd
# 导入openpyxl模块,用于读取和写入Excel文件 📖
from openpyxl import load_workbook
# 导入openpyxl.styles中的相关类,用于设置Excel单元格的样式 ✨
from openpyxl.styles import Border, Side, Font, Alignment
# 使用pandas的read_excel函数读取Excel文件,指定header=2表示第三行为表头(因为Python计数从0开始)
df_materials = pd.read_excel("材料表.xlsx", header=2)
# 对读取的DataFrame进行筛选,选择'数量'列中大于500的行,得到新的DataFrame
df_filtered = df_materials[df_materials["数量"] > 500]
# 创建一个ExcelWriter对象,用于将筛选后的数据写入Excel文件。
# mode='a'表示以追加模式打开文件,engine='openpyxl'指定使用openpyxl引擎,datetime_format指定日期格式
with pd.ExcelWriter('材料表.xlsx', mode='a', engine='openpyxl', datetime_format='YYYY-MM-DD') as writer:
# 将筛选后的DataFrame写入Excel文件的'数量大于500'工作表中,不包括行索引(index=False)
df_filtered.to_excel(writer, sheet_name='数量大于500', index=False)
# 定义单元格边框的样式,thin_border表示边框为细线,颜色为黑色
thin_border = Side(border_style="thin", color="000000")
# 使用openpyxl的load_workbook函数加载Excel工作簿
workbook = load_workbook("材料表.xlsx")
# 通过工作簿的索引获取名为'数量大于500'的工作表
worksheet = workbook["数量大于500"]
# 设置工作表中特定列的列宽,例如将A列宽设为12,C列宽设为15.5,G列宽设为10
worksheet.column_dimensions['A'].width = 12
worksheet.column_dimensions['C'].width = 15.5
worksheet.column_dimensions['G'].width = 10
# 遍历工作表中的每一行和每一个单元格,为每个单元格设置字体、边框和对齐方式
for row in worksheet.iter_rows(min_row=2, max_row=worksheet.max_row, min_col=1, max_col=worksheet.max_column):
for cell in row:
# 设置单元格字体大小为10
cell.font = Font(size=10)
# 设置单元格边框为之前定义的细线边框
cell.border = Border(top=thin_border, left=thin_border, right=thin_border, bottom=thin_border)
# 设置单元格的对齐方式,水平对齐为左对齐,垂直对齐为居中
cell.alignment = Alignment(horizontal="left", vertical="center")
# 保存工作簿的更改
workbook.save("材料表.xlsx")
代码解析 🧐
导入模块
import pandas as pd
from openpyxl import load_workbook
from openpyxl.styles import Border, Side, Font, Alignment
这部分代码导入了我们需要的模块:
pandas
用于数据分析和处理openpyxl
用于操作Excel文件openpyxl.styles
中的Border
,Side
,Font
,Alignment
用于设置单元格样式
读取Excel文件
df_materials = pd.read_excel("材料表.xlsx", header=2)
这里使用pandas的read_excel
函数读取文件,header=2
参数告诉pandas数据的表头在第三行。
数据筛选
df_filtered = df_materials[df_materials["数量"] > 500]
我们通过条件筛选出数量大于500的数据行。
写入筛选后的数据
with pd.ExcelWriter('材料表.xlsx', mode='a', engine='openpyxl', datetime_format='YYYY-MM-DD') as writer:
df_filtered.to_excel(writer, sheet_name='数量大于500', index=False)
使用ExcelWriter
将筛选后的DataFrame写入Excel文件的新工作表中。mode='a'
表示追加模式,index=False
表示不写入行索引。
设置单元格样式
thin_border = Side(border_style="thin", color="000000")
workbook = load_workbook("材料表.xlsx")
worksheet = workbook["数量大于500"]
worksheet.column_dimensions['A'].width = 12
# ...
这部分代码首先定义了一个细边框样式,然后加载工作簿,并对特定工作表进行样式设置。
遍历单元格设置样式
for row in worksheet.iter_rows(min_row=2, max_row=worksheet.max_row, min_col=1, max_col=worksheet.max_column):
for cell in row:
cell.font = Font(size=10)
cell.border = Border(top=thin_border, left=thin_border, right=thin_border, bottom=thin_border)
cell.alignment = Alignment(horizontal="left", vertical="center")
这里我们遍历每个单元格,设置字体大小、边框和对齐方式。
保存更改
workbook.save("材料表.xlsx")
最后,保存对工作簿所做的更改。
这样,我们就完成了使用Python对Excel数据的筛选和样式设置。希望这篇博客对你有所帮助!😊
有疑问的地方,可以加微信,一起沟通学习