[python3]Excel解析库-openpyxl

https://openpyxl.readthedocs.io/en/stable/

`openpyxl` 是一个用于读写 Excel 2010 xlsx/xlsm/xltx/xltm 文件的 Python 库。它允许开发者创建、修改和保存电子表格,而无需依赖 Microsoft Excel 软件本身。`openpyxl` 支持读取和写入 Excel 的工作簿(Workbook)、工作表(Worksheet)、单元格(Cell)以及样式等元素。

### 安装

要使用 `openpyxl`,首先需要安装它。可以通过 pip 工具来安装最新版本:


pip3 install openpyxl

### 基本用法

#### 创建一个新的工作簿```python
from openpyxl import Workbook# 创建一个新的工作簿对象
wb = Workbook()# 获取活动的工作表
ws = wb.active# 给工作表命名
ws.title = "Sample Sheet"# 写入数据到单元格
ws['A1'] = "Hello"
ws['B1'] = "World"# 保存文件
wb.save("sample.xlsx")
```#### 打开现有的工作簿```python
from openpyxl import load_workbook# 加载现有工作簿
wb = load_workbook('existing_file.xlsx')# 获取所有工作表的名字
print(wb.sheetnames)# 选择特定的工作表
ws = wb["Sheet1"]# 或者通过索引获取第一个工作表
ws = wb.worksheets[0]
```#### 遍历工作表中的行和列```python
for row in ws.iter_rows(min_row=1, max_col=3, max_row=2, values_only=True):print(row)  # 输出每一行的数据元组# 或者逐个访问单元格
for cell in ws["A"]:print(cell.value)
```#### 添加新的工作表```python
# 创建新的工作表并指定位置
ws2 = wb.create_sheet("My New Sheet", 0)  # 在最前面插入新工作表
```#### 修改单元格样式```python
from openpyxl.styles import Font, Color, Alignment, Border, Side, PatternFill# 设置字体样式
cell = ws['A1']
cell.font = Font(name='Arial', size=14, bold=True, italic=False)# 设置对齐方式
cell.alignment = Alignment(horizontal="center", vertical="center")# 设置边框
thin_border = Border(left=Side(style='thin'), right=Side(style='thin'), top=Side(style='thin'), bottom=Side(style='thin'))
cell.border = thin_border# 设置背景颜色
cell.fill = PatternFill(start_color="FFCC66", end_color="FFCC66", fill_type="solid")
```#### 合并和拆分单元格```python
# 合并单元格
ws.merge_cells('A1:B2')# 拆分已合并的单元格
ws.unmerge_cells('A1:B2')
```#### 插入图表```python
from openpyxl.chart import BarChart, Reference# 准备数据
data = Reference(ws, min_col=1, min_row=1, max_col=3, max_row=4)# 创建柱状图
chart = BarChart()
chart.add_data(data, titles_from_data=True)# 将图表添加到工作表中
ws.add_chart(chart, "E5")
```### 更多高级功能- **公式**:可以在单元格中设置公式,例如 `ws['A1'] = '=SUM(A2:A4)'`
- **冻结窗格**:使用 `ws.freeze_panes = 'A2'` 来冻结顶部一行或左侧一列。
- **条件格式**:可以为单元格应用条件格式规则。
- **批注**:支持给单元格添加批注。
- **保护工作表**:可以启用工作表保护以防止意外更改。### 示例:完整代码示例以下是一个完整的例子,演示了如何创建包含简单表格的工作簿,并对其进行一些基本操作:```python
from openpyxl import Workbook
from openpyxl.styles import Font, Alignment, Border, Side# 创建一个新的工作簿对象
wb = Workbook()# 获取活动的工作表
ws = wb.active
ws.title = "Sales Data"# 添加标题行
headers = ["Product", "Q1 Sales", "Q2 Sales"]
ws.append(headers)# 设置标题行样式
for col in range(1, len(headers) + 1):cell = ws.cell(row=1, column=col)cell.font = Font(bold=True)cell.alignment = Alignment(horizontal="center")# 添加数据行
data = [("Widget A", 120, 150),("Widget B", 90, 110),("Widget C", 75, 85)
]for row in data:ws.append(row)# 保存文件
wb.save("sales_report.xlsx")
```

以上是关于 `openpyxl` 的一些基础知识和常用功能。

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

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

相关文章

【算法刷题】leetcode hot 100 哈希篇

文章目录 1. 两数之和49. 字母异位词分组128. 最长连续序列总结 1. 两数之和 leetcode:https://leetcode.cn/problems/two-sum/description/?envTypestudy-plan-v2&envIdtop-100-liked暴力解决: public int[] twoSum(int[] nums, int target) {for …

iOS 逆向学习 - iOS Architecture Cocoa Touch Layer

iOS 逆向学习 - iOS Architecture Cocoa Touch Layer 一、Cocoa Touch Layer 简介二、Cocoa Touch Layer 的核心功能1. UIKit2. Event Handling(事件处理)3. Multitasking(多任务处理)4. Push Notifications(推送通知&…

java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter

今天在朋友机子上运行代码,在生成token的时候,遇到了这样一个问题: Caused by: java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter at io.jsonwebtoken.impl.Base64Codec.decode(Base64Codec.java:26) ~[jjwt-0.9.1.jar:0.…

从0搭建DataSphereStudio保姆级教程--复制粘贴即用(hadoop2.7.2、hive2.3.3、spark2.4.5)

centos7 部署Hadoop 2.7.2 前置:配置好免密登录 1、安装JDK1.8 yum -y install java-1.8.0-openjdk*#验证 java -version2、下载Hadoop2.7.2安装包及解压(可提前下载好直接上传) mkdir /opt/server mkdir /opt/software cd /opt/software wget http:…

网站常用功能模块-鉴权

一:JWT是什么? 常用鉴权方式有很多种,今天主要介绍基于token的鉴权方式JWT(Json JSON Web Token)。因为这种方式实现起来方便快捷。整体实现逻辑如下 第一次登陆时,前端携带账号和密码请求登录接口。服务…

Colyseus 与 HTTP API 的集成

Colyseus 与 HTTP API 的集成 在使用 Colyseus 开发实时多人应用时,通常需要与传统的 HTTP API 集成,例如用户身份验证、存储游戏数据、获取排行榜等。以下是 Colyseus 与 HTTP API 集成的详细介绍: 1. Colyseus 的基本架构 Colyseus 是一个…

asp.net core mvc的 ViewBag , ViewData , Module ,TempData

在 ASP.NET MVC 和 ASP.NET Core MVC 中,ViewBag 和 ViewData 是两种用于将数据从控制器传递到视图(View)的常用方法。它们都允许控制器将动态数据传递给视图,但它们的实现方式有所不同。关于 Module,它通常指的是某种…

stm32的掉电检测机制——PVD

有时在一些应用中,我们需要检测系统是否掉电了,或者要在掉电的瞬间需要做一些处理。 STM32内部自带PVD功能,用于对MCU供电电压VDD进行监控。 STM32就有这样的掉电检测机制——PVD(Programmable Voltage Detecter),即可编程电压检…

Flink系列知识讲解之:深入了解 Flink 的网络协议栈

Flink系列知识之:深入了解 Flink 的网络协议栈 Flink 的网络协议栈是组成 flink-runtime 模块的核心组件之一,也是每个 Flink 任务的核心。它连接着来自所有任务管理器的各个工作单元(子任务)。这是流数据流过的地方,…

uni-app 多平台分享实现指南

uni-app 多平台分享实现指南 在移动应用开发中,分享功能是一个非常常见的需求,尤其是在社交媒体、营销活动等场景中。使用 uni-app 进行多平台开发时,可以通过一套代码实现跨平台的分享功能,涵盖微信小程序、H5、App 等多个平台。…

基于深度学习的视觉检测小项目(六) 项目的信号和变量的规划

• 关于前后端分离 当前流行的一种常见的前后端分离模式是vueflask,vueflask模式的前端和后端之间进行数据的传递通常是借助 API(应用程序编程接口)来完成的。vue通过调用后端提供的 API 来获取或提交数据。例如,前端可能通过发送…

机器视觉面试题PDF

以下是一些机器视觉面试题PDF资源的推荐: GitHub仓库• 《百面计算机视觉》面试题整理:这个GitHub仓库整理了计算机视觉算法岗的面试题,包括深度学习基础、机器学习高频面试题、传统CV(Opencv面试题)、目标检测、图像分类、图像分割、Transfo…

Python自学 - 递归函数

1 Python自学 - 递归函数 递归函数是一种在函数体内调用自己的函数,就像“左脚踩着右脚,再右脚踩着左脚… 嗯,你就可以上天了!”。递归函数虽然不能上天,但在处理某些场景时非常好用, 一种典型的场景就是遍…

党员学习交流平台

本文结尾处获取源码。 本文结尾处获取源码。 本文结尾处获取源码。 一、相关技术 后端:Java、JavaWeb / Springboot。前端:Vue、HTML / CSS / Javascript 等。数据库:MySQL 二、相关软件(列出的软件其一均可运行) I…

华为 Sensor 省电策略调研

华为EMUI 9.0.0.187(C00E57R1P15) 无该功能 华为EMUI 9.1.0.321(C00E320R1P1) 之后有sensor管控 一、华为 Sensor 省电策略 1. Sensor 类别只配置非唤醒类Sensor 2. 手机静止情况,应用不可见时达到1分钟&#xff0…

web实操9——session

概念 数据保存在服务器HttpSession对象里。 session也是域对象,有setAttribute和getAttribute方法 快速入门 代码 获取session和塞入数据: 获取session获取数据: 请求存储: 请求获取: 数据正常打印&#xff1a…

Unity的四种数据持久化方式

目录 什么是数据持久化 数据持久化之PlayerPrefs 概述 API及用法 电脑中存放的位置 优缺点 主要用处 封装PlayerPrefs 数据持久化之XML XML是什么 读取XML信息 C#读取XML的方法有几种 读取xml文件信息 读取元素和属性信息 总结 写入XML信息 选择存储目录 存储…

面向对象分析和设计OOA/D,UML,GRASP

目录 什么是分析和设计? 什么是面向对象的分析和设计? 迭代开发 UML 用例图 交互图 基于职责驱动设计 GRASP 常见设计原则 什么是分析和设计? 分析,强调是对问题和需求的调查研究,不是解决方案。例如&#x…

Nginx:限流限速

1. 什么是限流限速? 限流限速是Nginx运维中一个非常重要的功能,用于防止服务器过载和保护资源免受滥用。它可以通过限制客户端的请求速率或上传/下载速度来实现。 限流:控制单位时间内允许处理的请求数量。这有助于防止过多的并发请求导致服务器性能下降或崩溃。限速:限制…

探索 JMeter While Controller:循环测试的奇妙世界

嘿,宝子们!今天咱们就来聊聊 JMeter 里超级厉害的 While 控制器,它就像是一把神奇的钥匙,能帮我们打开循环测试的大门,模拟出各种各样复杂又有趣的场景哦! 一、While 控制器初印象 想象一下,你…