处理execl表格的库----openpyxl

news2024/11/16 15:27:42

一、打开现有的工作文档

import openpyxl

# 打开工作簿
workbook = openpyxl.load_workbook('download/nihao.xlsx')

# 获取工作表
sheet = workbook['Sheet1']

# 读取单元格数据
cell_value = sheet['A1'].value
print(cell_value)

二、创建新的execl文档

import openpyxl

# 创建新的工作簿
workbook = openpyxl.Workbook()

# 获取默认工作表
sheet = workbook.active

# 写入数据到单元格中
sheet['A1'] = 'hello'
sheet['B1'] = 'world'

# 保存工作铺
workbook.save("download/new_example.xlsx")

三、读取数据

import openpyxl

# 打开工作簿
workbook = openpyxl.load_workbook('download/nihao.xlsx')

# 获取工作表
sheet = workbook['Sheet1']

# 获取 sheet
ws3 = workbook.get_sheet_by_name(u"Sheet1")

# 读取单元格数据
cell_value = sheet['A1'].value
print(cell_value)

# 通过行和列索引读取数据
cell_value = sheet.cell(row=2, column=3).value
print(cell_value)

四、写入数据到单元格

import openpyxl

# 创建新的工作簿
workbook = openpyxl.Workbook()

# 获取默认工作表
sheet = workbook.active

# 写入数据到单元格中
sheet['A1'] = 'hello'
sheet['B1'] = 'world'
sheet.cell(row=2, column=2, value='2-2')

# 保存工作铺
workbook.save("download/new_example.xlsx")

五、创建新工作表

import openpyxl

# 创建新的工作簿
workbook = openpyxl.Workbook()

# 创建新的工作sheet
new_sheet = workbook.create_sheet(title='newsheet')

#创建一个 sheet 名为 sheet
ws1 = wb.create_sheet("sheet")  

 # 设置 sheet 标题
ws1.title = "新表单" 

 # 创建一个 sheet,插入到最前面 默认插在后面
ws2 = wb.create_sheet("mysheet", 0)

 # 设置 sheet 标题
ws2.title = u"你好" 

# 保存工作铺
workbook.save("download/new_example.xlsx")

六、复制工作表

import openpyxl

# 创建新的工作簿
workbook = openpyxl.load_workbook("download/nihao.xlsx")

# 复制工作表
copied_sheet = workbook.copy_worksheet(workbook['Sheet1'])
copied_sheet.title = 'copy of Sheet1'

# 保存工作铺
workbook.save("download/nihao.xlsx")

七、删除工作表

import openpyxl

# 创建新的工作簿
workbook = openpyxl.load_workbook("download/nihao.xlsx")

# 删除sheet
del workbook['copy of Sheet1']

# 删除 sheet
workbook.remove(copy of Sheet1)

# 保存工作铺
workbook.save("download/nihao.xlsx")

八、设置字体样式

import openpyxl
from openpyxl.styles import Font

# 打开工作簿
workbook = openpyxl.load_workbook('download/nihao.xlsx')

# 获取工作表
sheet = workbook['Sheet1']

# 创建字体样式
font = Font(name='Arial', size=14, bold=True)

# 将字体样式应用到单元格
sheet['A1'].font = font

# 保存工作簿
workbook.save('download/nihao.xlsx')

九、设置背景颜色

import openpyxl
from openpyxl.styles import Font, PatternFill

# 打开工作簿
workbook = openpyxl.load_workbook('download/nihao.xlsx')

# 获取工作表
sheet = workbook['Sheet1']

# 创建背景颜色样式
fill = PatternFill(start_color='FFFF00', end_color='FFFF00', fill_type='solid')

 # 设置 sheet 标签背景色
ws1.sheet_properties.tabColor = "1072BA" 

# 将背景颜色应用到单元格
sheet['B2'].fill = fill

# 保存工作簿
workbook.save('download/nihao.xlsx')

十、设置边框

import openpyxl
from openpyxl.styles import Font, PatternFill, Border, Side

# 打开工作簿
workbook = openpyxl.load_workbook('download/nihao.xlsx')

# 获取工作表
sheet = workbook['Sheet1']

# 创建边框样式
border = Border(left=Side(style='thin'), right=Side(style='thin'), top=Side(style='thin'), bottom=Side(style='thin'))

# 将边框应用到单元格
sheet['C2'].border = border

# 保存工作簿
workbook.save('download/nihao.xlsx')

十一、批量操作

指定行列

# 操作单列
for cell in ws["A"]:
    print(cell.value)
# 操作单行
for cell in ws["1"]:
    print(cell.value)
# 操作多列
for column in ws['A:C']:
    for cell in column:
        print(cell.value)
# 操作多行
for row in ws['1:3']:
    for cell in row:
        print(cell.value)
# 指定范围
for row in ws['A1:C3']:
    for cell in row:
        print(cell.value)

所有行或者列

# 所有行
for row in ws.iter_rows():
    for cell in row:
        print(cell.value)
# 所有列
for column in ws.iter_cols():
    for cell in column:
        print(cell.value)

设置整行数据

ws.append((1,2,3))

合并单元格

# 合并
ws.merge_cells('A2:D2')
# 解除合并
ws.unmerge_cells('A2:D2')

ws.merge_cells(start_row=2,start_column=1,end_row=2,end_column=4)
ws.unmerge_cells(start_row=2,start_column=1,end_row=2,end_column=4)

十二、单元格格式

OpenPyXl 用6种类来设置单元格的样式

NumberFormat 数字
Alignment 对齐
Font 字体
Border 边框
PatternFill 填充
Protection 保护

from openpyxl.styles import Font, PatternFill, Border, Side, Alignment, Protection
from openpyxl.styles import numbers

wb = Workbook()
ws = wb.active
ws.cell(row=1, column=1, value='宋体').font = Font(name=u'宋体', size=12, bold=True, color='FF0000')
ws.cell(row=2, column=2, value='右对齐').alignment = Alignment(horizontal='right')
ws.cell(row=3, column=3, value='填充渐变色').fill = PatternFill(fill_type='solid', start_color='FF0000')
ws.cell(row=4, column=4, value='设置边线').border = Border(left=Side(border_style='thin', color='FF0000'), right= Side(border_style='thin', color='FF0000'))
ws.cell(row=5, column=5, value='受保护的').protection = Protection(locked=True, hidden=True)
ws.cell(row=6, column=6, value=0.54).number_format =numbers.FORMAT_PERCENTAGE

引入字体类
用 cell 方法,为单元格设置值的同时,设置格式
每种格式都有特定的属性,为其设置特定的格式对象
数字格式有点区别,通过设置格式名称来完成,numbers.FORMAT_PERCENTAGE 是个字符串
Border 类,需要配合 Side 类使用,它们都在 openpyxl.styles 中定义
需要注意的是,单元格样式属性只能通过样式对象赋予,而无法通过样式属性来修改,例如 ws.cell(1, 1).font.color = ‘00FF00’ 会报错,如果真要换,需要重新创建一个样式实体,重新赋值
上面展示的是单个单元格格式的设置,也可以批量设置,有两种方式,一种是循环范围内的所有单元格,逐个设置,另一种是对整列或者整行设置:

font = Font(bold=True)

# 遍历范围内的单元格
for row in ws['A1:C3']:
    for cell in row:
        cell.font = font

# 设置整行
row = ws.row_dimensions[1]
row.font = font

# 设置整列
column = ws.column_dimensions["A"]
column.font = font

十三、图表

from openpyxl import Workbook
from openpyxl.chart import BarChart, Reference

wb = Workbook()
ws = wb.active

rows = [
    ('月份', '苹果', '香蕉'),
    (1, 43, 25),
    (2, 10, 30),
    (3, 40, 60),
    (4, 50, 70),
    (5, 20, 10),
    (6, 10, 40),
    (7, 50, 30),
]

for row in rows:
    ws.append(row)

chart1 = BarChart()
chart1.type = "col"
chart1.style = 10
chart1.title = "销量柱状图"
chart1.y_axis.title = '销量'
chart1.x_axis.title = '月份'

data = Reference(ws, min_col=2, min_row=1, max_row=8, max_col=3)
series = Reference(ws, min_col=1, min_row=2, max_row=8)
chart1.add_data(data, titles_from_data=True)
chart1.set_categories(series)
ws.add_chart(chart1, "A10")

引入柱状图类 BarChart 和 数据应用类 Reference
创建 Workbook,并为活动 Sheet 添加数据
创建柱状图对象,设置图表属性,type 为 col 为列状图,bar 为水平图
创建数据引用对象,指定从那个 sheet 以及数据范围
创建系列数据引用对象
将数据和系列加入到图表对象中
最后将图表对象用 add_chart 添加到 sheet 里
在这里插入图片描述

十四、圆饼图

from openpyxl import Workbook
from openpyxl.chart import PieChart, Reference

data = [
    ['水果', '销量'],
    ['苹果', 50],
    ['樱桃', 30],
    ['橘子', 10],
    ['香蕉', 40],
]

wb = Workbook()
ws = wb.active

for row in data:
    ws.append(row)

pie = PieChart()
pie.title = "水果销量占比"
labels = Reference(ws, min_col=1, min_row=2, max_row=5)
data = Reference(ws, min_col=2, min_row=1, max_row=5)
pie.add_data(data, titles_from_data=True)
pie.set_categories(labels)

ws.add_chart(pie, "D1")

引入饼图类 PieChart 和 数据应用类 Reference
创建图表数据
创建图表对象,设置图表标题
定义标签数据引用和数据引用,并将其加入到图表
将图表对象添加到 sheet 的指定位置
在这里插入图片描述

注:https://openpyxl-chinese-docs.readthedocs.io/zh-cn/latest/index.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2171980.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Pandas -----------------------基础知识(五)

索引和列操作函数缺失值 索引和列操作 # 1 加载数据 # 1.1 从链家租房数据集中获取天通苑租房区域的所有数据存储在df2中 # 1.2 从df2中获取价格列存储在df2_price对象 import pandas as pd df pd.read_csv(/root/pandas_code_ling/data/b_LJdata.csv) df2 df[df[区域] 天通苑…

Android Button “No speakable text present” 问题解决

记录一个问题,今天让同学们做了个小车控制界面,使用Button控件,删除设置的text属性,会出现“No speakable text present”的错误,如图所示。这是由于Android的无障碍设置需要朗读Button的文本,如果没有设置…

Linux系统安装MySQL8.40(保姆级教程)

前言: 说明:本文章是在阿里云ecs上安装MySQL,即:Linux是在联网状态下。 一、安装前环境准备 1.查看MySQL应用是否已存在 rpm -qa |grep mysql说明:若返回空信息,就说明当前环境没有安装MySQL。 2.查看ma…

重磅!三十载种业盛会今年10月换址举办

重磅!三十载种业盛会今年10月换址举办 粮安天下,种筑基石。2024 年,在种业振兴行动迈入“五年见成效”新阶段的关键之年,哈尔滨种业博览会也即将迎来它的第30个年头。因“第九届亚洲冬季运动会”占用哈尔滨国际会展中心&#xff…

en造数据结构与算法C# 之 二叉排序树的增/查

前篇:en造数据结构与算法C# 二叉排序树 泛型类的基本构成-CSDN博客 了解了基本结构以后就可以为其编写增加代码了 注意在二叉排序树类中定义了一个根节点 AddNode(添加节点)方法分析 输入: 一个添加节点的位置(默认为…

鳕鱼检测系统源码分享

鳕鱼检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vision …

LLM - 理解 多模态大语言模型(MLLM) 的 幻觉(Hallucination) 与相关技术 (七)

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/142463789 免责声明:本文来源于个人知识与公开资料,仅用于学术交流,欢迎讨论,不支持转载。 多模态…

【湖南步联科技身份证】 身份证读取与酒店收银系统源码整合———未来之窗行业应用跨平台架构

一、html5 <!DOCTYPE html> <html><head><meta http-equiv"Content-Type" content"text/html; charsetutf-8" /><script type"text/javascript" src"http://51.onelink.ynwlzc.net/o2o/tpl/Merchant/static/js…

电脑桌面美化用什么软件?精选6款桌面文件管理工具,小白秒变大师!

随着电脑在日常生活和工作中的普及&#xff0c;越来越多的用户开始重视电脑桌面美化的需求。单调的桌面背景和杂乱的文件排列已经无法满足我们对个性化与效率的追求。许多用户渴望找到合适的桌面整理工具&#xff0c;使他们的电脑桌面不仅美观&#xff0c;还能提升工作效率。为…

艺术家刘欢近况时隔5年再登《歌手》舞台,国家级嗓音引发热议

在我国&#xff0c;有这样一位艺术家&#xff0c;他自上世纪80年代至今&#xff0c;用一首首脍炙人口的歌曲和他那独特的嗓音陪伴数代人成长。凭借音乐上的造诣和天赋&#xff0c;他被众多网友誉为“音乐教父”&#xff1b;攀登至领域巅峰时&#xff0c;他不忘提携后辈&#xf…

低代码平台推荐与对比,国内外哪家更胜一筹?

低代码开发通过图形界面简化开发&#xff0c;提升速度与协作&#xff0c;降低成本。国内外平台如ZohoCreator、OutSystems等各具特色&#xff0c;支持快速开发、集成与数据安全。企业可试用后按需选择&#xff0c;降低决策成本。 一、低代码是什么&#xff1f; 低代码开发是一…

如何组织一场考试并筛选未参加答题的考生?

&#x1f64b;频繁有小伙伴咨询&#xff1a;我组织了一场答题活动&#xff0c;导出考试成绩时只有参加了答题的人&#xff0c;但我想要找到哪些人没答题 此前我们会建议小伙伴逐人排查&#xff0c;但这建议被反复吐槽&#x1f926; 确实&#xff0c;如果只有十几个人逐人排查还…

一家5口全感染?幽门螺杆菌筛查的意义!

近日&#xff0c;浙江的一家医院消化内科专家接诊了一名因感染幽门螺杆菌多年而罹患胃癌的患者。糟糕的是&#xff0c;他一家5口全感染了这种菌。2023年底&#xff0c;浙江杭州李先生&#xff08;化名&#xff09;在公司组织体检时查出幽门螺杆菌阳性。但他也不知道自己是何时、…

HTML基础用法介绍一

VS code 如何快速生成HTML骨架注释是什么&#xff1f;为什么要写注释&#xff1f;注释的标签是什么&#xff1f;标题标签段落标签换行标签与水平线标签 (都是单标签&#xff09;文本格式化标签图片标签超链接标签音频标签视频标签 &#x1f698;正片开始 VS code 如何快速生成…

相亲交友系统的社会影响:家庭结构的变化

随着互联网技术的发展&#xff0c;相亲交友系统已成为许多单身人士寻找伴侣的重要途径。这些平台不仅改变了人们的社交方式&#xff0c;还对家庭结构产生了深远的影响。本文将探讨相亲交友系统如何促使家庭结构发生变化&#xff0c;开发h17711347205并通过简单的Python代码示例…

【bug fixed】hexo d的时候Spawn failed

在执行hexo d部署的时候&#xff0c;遇到报错&#xff1a; % hexo d INFO Validating config INFO Deploying: git INFO Clearing .deploy_git folder... INFO Copying files from public folder... INFO Copying files from extend dirs... [main 8e89088] Site updated…

信息学奥赛的最佳启蒙阶段是小学还是初中?

信息学奥赛&#xff08;NOI&#xff09;近年来越来越受家长和学生的关注&#xff0c;尤其是在编程教育不断升温的背景下&#xff0c;信息学竞赛成为了许多家庭的教育选择之一。家长们往往关心的是&#xff1a;孩子应该在什么年龄段开始接触信息学竞赛&#xff0c;才能打下坚实的…

设计模式 之 —— MVC模式

目录 什么是MVC模式&#xff1f; MVC 工作流程&#xff1a; MVC模式&#xff08;java示例.部分代码&#xff09; 1、Model java 2、View HTML CSS JS 3、Controller java 运行结果&#xff1a; 适用场景&#xff1a; 什么是MVC模式&#xff1f; MVC模式提供了灵活…

基于 C# 的文本文件的编码识别

基于 C# 的文本文件的编码识别 前言一、有 BOM 文件头二、无 BOM 文件头三、简体中文汉字编码四、C# 程序对编码的识别1、文件选择按钮代码&#xff1a;2、获取文件编码&#xff0c;有 BOM 的文件识别3、获取文件编码&#xff0c;UTF8 无 BOM 文件的识别4、获取文件编码&#x…

如何有效应对商标撤三挑战?

商标撤三作为商标法中的一项重要制度&#xff0c;时刻考验着企业的商标维护与保护能力。面对这一挑战&#xff0c;企业如何构建一套有效的商标撤三管理体系&#xff0c;以确保自身品牌权益不受侵害&#xff0c;成为了一个亟待解决的问题。 理解商标撤三制度的核心要义 商标撤三…