0
点赞
收藏
分享

微信扫一扫

POI和easyExcel详解

目录

专栏导读

在这里插入图片描述

背景

  • 我们在日常办公的时候,经常会遇到大批量数据写入Excel表格中,但是有一些python的第三方库写入的效率和速度偏慢,所以我们可以采用更高效的办法对数据进行写入保存。

  • 在保存的时候将表头修改一个背景色,以及修改居中、以及字体的样式

  • 除表头之外的其余单元格样式也想做修改,那么您可以参考此篇文章

1、库的介绍

①:openpyxl

2、库的安装

用途安装
openpyxl读写Excelpip install openpyxl -i https://pypi.tuna.tsinghua.edu.cn/simple/

3、核心代码

  • ① 定义边框样式

# 定义边框样式
border_style = Border(
    top=Side(border_style="thin"),
    bottom=Side(border_style="thin"),
    left=Side(border_style="thin"),
    right=Side(border_style="thin")
)
  • ② 表头样式(背景色+字体样式+颜色)

# 定义表头背景颜色 - 红色 (192,0,0)
header_fill = PatternFill(start_color='FFC00000', end_color='FFC00000', fill_type='solid')

# 定义表头字体颜色 - 白色
header_font = Font(name='微软雅黑', size=9, color='FFFFFF')
  • ③ 单元格样式(字体样式+居中)

cell.font = Font(name='微软雅黑', size=9)
# 设置单元格内容居中对齐
cell.alignment = Alignment(horizontal='center', vertical='center')

4、完整代码

# -*- coding: UTF-8 -*-
'''
@Project :2024-11-29 
@File    :修改样式.py
@IDE     :PyCharm 
@Author  :一晌小贪欢(278865463@qq.com)
@Date    :2024/11/29 下午10:20 
'''

import time
from openpyxl import load_workbook
from openpyxl.styles import Font, Alignment, PatternFill
from openpyxl.styles.borders import Border, Side

# 打开现有的Excel文件
wb = load_workbook('test_bills.xlsx')
sheetnames = wb.sheetnames

# 定义边框样式
border_style = Border(
    top=Side(border_style="thin"),
    bottom=Side(border_style="thin"),
    left=Side(border_style="thin"),
    right=Side(border_style="thin")
)

# 定义表头背景颜色 - 红色 (192,0,0)
header_fill = PatternFill(start_color='FFC00000', end_color='FFC00000', fill_type='solid')

# 定义表头字体颜色 - 白色
header_font = Font(name='微软雅黑', size=9, color='FFFFFF')

for sheet in sheetnames:
    t1 = time.time()
    ws = wb[sheet] # 获取活动的工作表
    # 遍历每一行
    for idx, row in enumerate(ws.iter_rows(), start=1):
        for cell in row:
            # 设置字体为微软雅黑,9号,默认黑色
            cell.font = Font(name='微软雅黑', size=9)

            # 设置单元格内容居中对齐
            cell.alignment = Alignment(horizontal='center', vertical='center')

            # 设置边框
            cell.border = border_style

        # 如果是第一行,则设置背景色为红色,字体颜色为白色
        if idx == 1:
            for cell in row:
                cell.fill = header_fill
                cell.font = header_font

    t2 = time.time()
    print(f"{sheet}处理完毕,耗时{t2-t1}秒")

# 保存修改后的文件
wb.save('修改后的文件.xlsx')

5、最快的方法(50万行44秒)——表头+其余单元格都修改样式

  • 目前Python中最快的库,去修改样式,详情请参考这篇文章,点我进行跳转

总结

  • 希望对初学者有帮助

  • 致力于办公自动化的小小程序员一枚

  • 希望能得到大家的【一个免费关注】!感谢

  • 求个 🤞 关注 🤞

  • 此外还有办公自动化专栏,欢迎大家订阅:Python办公自动化专栏

  • 求个 ❤️ 喜欢 ❤️

  • 此外还有爬虫专栏,欢迎大家订阅:Python爬虫基础专栏

  • 求个 👍 收藏 👍

  • 此外还有Python基础专栏,欢迎大家订阅:Python基础学习专栏

举报

相关推荐

0 条评论