python基于openpyxl操作excel

Python3 操作Excel

  • 环境: python3.11
  • 系统: ubuntu20.04
  • 使用依赖: openpyxl

1. 安装依赖

python 复制代码
pip install openpyxl

跳转官网

2. 使用

2.1 创建工作簿

python 复制代码
from openpyxl import Workbook
wb = Workbook()

工作簿至少要包含一个工作表(sheet), 可以使用如下来获取它

python 复制代码
ws = wb.active

也可以创建自定义名称的工作表

python 复制代码
ws1 = wb.create_sheet("name1")

2.2 查看工作簿下的所有工作表

python 复制代码
print(wb.sheetnames)

2.3 访问/修改某个单元格数据

比如说修改A1单元格位置的参数

python 复制代码
ws["A1"] = "姓名"

2.4 保存为文件

python 复制代码
wb = Workbook()
wb.save('test.xlsx')

2.5 设置全局文字居中

python 复制代码
from openpyxl import Workbook
from openpyxl.styles import Alignment


wb = Workbook()

sheet_name = "基础原料"
ws = wb.create_sheet(index=0, title=sheet_name)

# 填充标题内容 A1-C1
ws["A1"] = "名称"
ws["B1"] = "价格"
ws["C1"] = "描述"

# 设置居中样式
align = Alignment(horizontal='center', vertical='center', wrap_text=True)
# 设置所有文本居中对齐
for row in ws.iter_rows():
    for cell in row:
        cell.alignment = align
        
# 保存
wb.save('material.xlsx')

2.6 单元格增加备注

python 复制代码
from openpyxl import Workbook
from openpyxl.styles import Alignment
from openpyxl.comments import Comment

wb = Workbook()

sheet_name = "基础原料"
ws = wb.create_sheet(index=0, title=sheet_name)

# 填充标题内容 A1-C1
ws["A1"] = "名称"
ws["B1"] = "价格"
ws["C1"] = "描述"

# 给A1单元格增加备注
a1_coment = Comment(text="该单元格为名称", author="开发者(作者)")
ws["A1"].comment = a1_coment

# 设置居中样式
align = Alignment(horizontal='center', vertical='center', wrap_text=True)
# 设置所有文本居中对齐
for row in ws.iter_rows():
    for cell in row:
        cell.alignment = align
        
# 保存
wb.save('material.xlsx')

2.7 合并单元格

python 复制代码
ws.merge_cells(range_string='A1:B3')

如果在合并之前单元格中有数据,在合并之后数据可能会覆盖成空白,建议在使用时,先做结构,先合并之后,在插值

2. 8 以流形式返回

以Django为例

python 复制代码
from django.http import HttpResponse

from openpyxl import Workbook
from openpyxl.styles import Alignment
from openpyxl.comments import Comment


def export_data():
    wb = Workbook()

    sheet_name = "基础原料"
    ws = wb.create_sheet(index=0, title=sheet_name)

    # 填充标题内容 A1-C1
    ws["A1"] = "名称"
    ws["B1"] = "价格"
    ws["C1"] = "描述"

    # 给A1单元格增加备注
    a1_coment = Comment(text="该单元格为名称", author="开发者(作者)")
    ws["A1"].comment = a1_coment

    # 设置居中样式
    align = Alignment(horizontal='center', vertical='center', wrap_text=True)
    # 设置所有文本居中对齐
    for row in ws.iter_rows():
        for cell in row:
            cell.alignment = align

    # 导出excel 表
    response = HttpResponse(content_type="application/msexcel")
    response["Access-Control-Expose-Headers"] = f"Content-Disposition"
    response[
        "Content-Disposition"
    ] = f'attachment;filename={quote(str(f"原料模板导出.xlsx"))}'
    wb.save(response)
return response
相关推荐
白帽攻防录9 分钟前
SRC 挖洞:PostScript 打印机驱动双 RCE,打印服务器怎么变成内网跳板
开发语言·网络安全·php·内网安全
十年Java程序媛24 分钟前
Java枚举Enum完整教程|替代静态常量,开发与面试要点
java·开发语言·spring boot·后端·面试
全栈弄潮儿42 分钟前
Python实战第7期:字典与集合
后端·python·编程语言
2603_965148111 小时前
电商选品调研:通过关键词搜索API获取市场热销商品,结合商品详情API分析竞品卖点与定价
开发语言·数据库·人工智能·python·信息可视化
xixiaoyunya2 小时前
Python 异步编程入门:用 asyncio 轻松实现并发任务
开发语言·python·php
把我格子衫拿来2 小时前
Dice 很高就够了吗?分割评价中的 IoU、表面距离与 HD95
python·图像分割·模型评估·医学影像·dice
学逆向的2 小时前
C 循环结构的执行效率分析
c语言·开发语言·数据结构·网络安全
曲径海盗2 小时前
【Python 学习第 31 天】复习:变量与数据类型 等 3 题
python·学习笔记·编程入门
Data_Journal2 小时前
如何绕过 Cloudflare:网页抓取的最佳方法
网络·python
小坏讲微服务2 小时前
刚发布一个月的JDK 27,为什么我建议你立刻升级?
java·开发语言·spring boot·spring·架构·求职招聘·springboot4