侧边栏壁纸
博主头像
Tool博主等级

行动起来,活在当下

  • 累计撰写 27 篇文章
  • 累计创建 3 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

源码8.提取指定范围数据保存在原Excel工作簿中

Jimmie
2024-02-01 / 0 评论 / 0 点赞 / 15 阅读 / 5241 字
温馨提示:
收藏保存网址不迷路:www.jimmie.top,若内容或图片失效,请反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

使用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数据的筛选和样式设置。希望这篇博客对你有所帮助!😊

有疑问的地方,可以加微信,一起沟通学习

jimmie.webp

  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin
  3. QQ打赏

    qrcode qq
博主关闭了所有页面的评论