当前位置: 首页 > news >正文

使用 Openpyxl 操作 Excel 文件详解

文章目录

  • 安装
    • 安装Python3
    • 安装 openpyxl
  • 基础操作
    • 1. 引入
    • 2. 创建工作簿和工作表
    • 3. 写入数据
    • 4. 保存工作簿
    • 5. 加载已存在的Excel
    • 6. 读取单元格的值
    • 7. 选择工作表
  • 样式和格式化
    • 1. 引入
    • 2. 设置字体
    • 3. 设置边框
    • 4. 填充
    • 5. 设置数字格式
    • 6. 数据验证
    • 7. 公式操作
  • 性能优化
    • 1. read_only/write_only
    • 2. 遍历单元格


openpyxl 是一个用于在 Python 中读取和写入 Excel 文件的优秀库。
它支持 .xlsx 和 .xlsm 格式,非常适合在 Ubuntu 系统上进行 Excel 数据处理和自动化操作。
本篇博客将介绍一些常用的 openpyxl 命令。

安装

安装Python3

首先,你需要安装 openpyxl 和 Python。在 Ubuntu 上,可以通过以下命令安装:

sudo apt install python3

安装 openpyxl

pip3 install openpyxl

基础操作

1. 引入

from openpyxl import Workbook # 新建文件的引入
from openpyxl import load_workbook # 加载已存在文件的引入

2. 创建工作簿和工作表

wb = Workbook() # 创建一个新的工作簿
ws = wb.active # 获取活动工作表

wb.create_sheet("Sheet2") # 创建一个新的工作表并命名
ws.title = "NewSheet" # 修改工作表名

3. 写入数据

ws['A1'] = 'Hello, World!'
ws['B1'] = 42
ws['C1'] = 3.14
cell = ws.cell(row=1, column=1, value="New Value")

4. 保存工作簿

wb.save('example.xlsx')

5. 加载已存在的Excel

wb = load_workbook('example.xlsx')
ws = wb.active

6. 读取单元格的值

cell_a1 = ws['A1'].value
cell_b1 = ws['B1'].value
cell_c1 = ws['C1'].value

print(f"A1: {cell_a1}, B1: {cell_b1}, C1: {cell_c1}")

7. 选择工作表

ws1 = wb.worksheets[0] # 通过索引选择工作表
ws2 = wb["Sheet2"] # 通过名称选择工作表

样式和格式化

1. 引入

from openpyxl.styles import Font, Alignment # 样式操作的引入

2. 设置字体

font = Font(name='Arial', size=14, bold=True, italic=False)
ws['A1'].font = font

3. 设置边框

border = Border(left=Side(border_style='thin'),
                right=Side(border_style='thin'),
                top=Side(border_style='thin'),
                bottom=Side(border_style='thin'))
ws['A1'].border = border

4. 填充

fill = PatternFill(start_color="FF0000", end_color="FF0000", fill_type="solid")
ws['A1'].fill = fill

5. 设置数字格式


ws['B1'].number_format = '0.00%'   # 百分比格式
ws['C1'].number_format = 'YYYY-MM-DD'  # 日期格式

6. 数据验证

from openpyxl.worksheet.datavalidation import DataValidation

dv = DataValidation(type="list", formula1='"Apple,Banana,Cherry"', allow_blank=True) # 创建数据验证对象

ws.add_data_validation(dv) 
dv.add('A1') # 将数据验证应用到单元格

7. 公式操作

可以在单元格中插入公式:

ws['D1'] = "=SUM(A1:A3)"

性能优化

1. read_only/write_only

对于大的 Excel 文件,可以使用read_only来提高读取效率, 使用 write_only 来优化写入性能

from openpyxl import load_workbook

wb = load_workbook('example.xlsx', read_only=True) # 使用只读模式加载工作簿

from openpyxl import Workbook

wb = Workbook(write_only=True) # 使用写入模式创建工作簿
ws = wb.create_sheet()

2. 遍历单元格

可以使用 .rows 和 .columns 遍历工作表中的行和列:

for row in ws.iter_rows(min_row=1, max_row=5, min_col=1, max_col=3):
    for cell in row:
        print(cell.value, end=" ")

相关文章:

  • 萃取的实现(三)
  • 【Python】02-Python简介
  • 什么叫不可变数据结构?
  • 宏管理工具之lite-manager
  • 2025 年 1 月公链行业研报:比特币主导地位强化
  • -末日星辰-
  • 如何使用费曼学习法自学决策树算法
  • 利用 OpenCV 进行棋盘检测与透视变换
  • ConcurrentHashMap 在Jdk 17 不同版本中的优化和改进
  • Python学习心得函数
  • 算法竞赛备赛——【背包DP】二维费用背包、分组背包
  • QEMU模拟运行FreeRTOS
  • Clash Nyanpasu设置VSCODE不走代理
  • 设计模式15:中介者模式
  • 使用html css js 来实现一个服装行业的企业站源码-静态网站模板
  • spring cloud gateway限流常见算法
  • 吸烟YOLO数据集,COCO格式
  • int* 和int的意思是不是一样
  • LLM 架构
  • 用deepseek学大模型08-cnn残差网络
  • 中美经贸高层会谈在瑞士日内瓦开始举行
  • 2024年上市公司合计实现营业收入71.98万亿元
  • 陕西澄城樱桃在上海推介,向长三角消费者发出“甜蜜之邀”
  • 见微知沪|优化营商环境,上海为何要当“细节控”自我加压?
  • “80后”计算机专家唐金辉已任南京林业大学副校长
  • 万达电影:股东杭州臻希拟减持不超1.3927%公司股份