python文件操作相关(excel)
python文件操作相关(excel)
- 1. openpyxl 库
- openpyxl其他用法
- 创建与删除
- 操作单元格
- 追加数据
- 格式化单元格
- 合并单元格
- 插入图片
- 公式
- 打印设置
- 保护工作表
- 其他功能
- 2. pandas 库
- 3. xlrd 和 xlwt 库
- 4. xlsxwriter 库
- 5. pyxlsb 库
- 应用场景
- 参考资料
在 Python 中,操作 Excel 文件通常使用 openpyxl、pandas 和 xlrd/xlwt 等库
- openpyxl:适合读写 .xlsx 文件,支持高级功能
- pandas:适合数据分析和处理,支持读写 .xlsx 和 .xls 文件
- xlrd/xlwt:适合读写旧版 .xls 文件
- xlsxwriter:适合创建复杂的 .xlsx 文件
- pyxlsb:适合读取 .xlsb 文件
1. openpyxl 库
openpyxl 是一个专门用于读写 Excel 2010 xlsx/xlsm/xltx/xltm 文件的库,它支持 Excel的高级功能,如公式、图表、样式等
主要功能
- 读取 Excel 文件:加载 Excel 文件并读取数据
- 写入 Excel 文件:创建或修改 Excel 文件并保存
- 操作工作表:添加、删除、重命名工作表
- 单元格操作:读取、写入、修改单元格内容
- 样式设置:设置单元格的字体、颜色、边框等样式。
from openpyxl import Workbook, load_workbook# 创建一个新的 Excel 文件
wb = Workbook()
ws = wb.active
ws.title = "Sheet1"# 写入数据
ws['A1'] = "Name"
ws['B1'] = "Age"
ws['A2'] = "Alice"
ws['B2'] = 25
ws['A3'] = "Bob"
ws['B3'] = 30# 保存文件
wb.save("example.xlsx")# 读取 Excel 文件
wb = load_workbook("example.xlsx")
ws = wb["Sheet1"]# 读取单元格数据
for row in ws.iter_rows(min_row=1, max_col=2, max_row=3, values_only=True):print(row)
openpyxl其他用法
创建与删除
-
创建新的工作表:
wb.create_sheet('NewSheet') -
删除工作表:
del wb['SheetName']
操作单元格
-
访问单元格:
- 通过坐标访问:
cell = ws['A1'] - 通过行和列索引访问:
cell = ws.cell(row=1, column=1)
- 通过坐标访问:
-
获取单元格的值:
value = ws['A1'].value -
遍历行和列:
- 遍历所有行:
for row in ws.iter_rows():for cell in row:print(cell.value) - 遍历特定范围的单元格:
for row in ws['A1':'C3']:for cell in row:print(cell.value)
- 遍历所有行:
追加数据
-
在现有工作表末尾追加一行:
from openpyxl import load_workbookwb = load_workbook('example.xlsx') ws = wb.active# 获取当前最后一行的行号 max_row = ws.max_row# 追加新行 new_row = ['Value1', 'Value2', 'Value3'] for col_idx, value in enumerate(new_row, start=1):cell = ws.cell(row=max_row + 1, column=col_idx)cell.value = valuewb.save('example.xlsx') -
使用
openpyxl.utils追加数据:from openpyxl import load_workbook from openpyxl.utils import get_column_letterwb = load_workbook('example.xlsx') ws = wb.activemax_row = ws.max_row new_data = [['Value1', 'Value2', 'Value3'],['Value4', 'Value5', 'Value6'] ]for row_idx, row_data in enumerate(new_data, start=max_row + 1):for col_idx, value in enumerate(row_data, start=1):col_letter = get_column_letter(col_idx)cell = ws[f'{col_letter}{row_idx}']cell.value = valuewb.save('example.xlsx') -
使用
ws.append追加数据:
ws.append方法接受一个列表作为参数,列表中的每个元素会被依次写入工作表当前最后一行的每个单元格中
-
创建一个新的工作簿并追加数据:
from openpyxl import Workbook# 创建一个新的工作簿 wb = Workbook() ws = wb.active# 追加一行数据 ws.append(['Value1', 'Value2', 'Value3'])# 保存工作簿 wb.save('example.xlsx') -
在现有工作簿中追加数据:
from openpyxl import load_workbook# 加载现有的工作簿 wb = load_workbook('example.xlsx') ws = wb.active# 追加多行数据 ws.append(['Value4', 'Value5', 'Value6']) ws.append(['Value7', 'Value8', 'Value9'])# 保存工作簿 wb.save('example.xlsx') -
追加包含公式的行:
from openpyxl import load_workbook# 加载现有的工作簿 wb = load_workbook('example.xlsx') ws = wb.active# 追加包含公式的行 ws.append(['SUM(A1:A10)', 'AVERAGE(B1:B10)'])# 保存工作簿 wb.save('example.xlsx')
格式化单元格
-
设置字体样式:
from openpyxl.styles import Fontcell = ws['A1'] cell.font = Font(size=14, bold=True, color='FF0000') -
设置单元格填充颜色:
from openpyxl.styles import PatternFillfill = PatternFill(start_color='FFFF00', end_color='FFFF00', fill_type='solid') cell.fill = fill -
设置边框:
from openpyxl.styles import Border, Sidethin = Side(border_style='thin', color='000000') border = Border(left=thin, right=thin, top=thin, bottom=thin) cell.border = border
合并单元格
-
合并单元格:
ws.merge_cells('A1:B1') -
取消合并单元格:
ws.unmerge_cells('A1:B1')
插入图片
- 插入图片:
from openpyxl.drawing.image import Imageimg = Image('example.png') ws.add_image(img, 'A1')
公式
- 设置公式:
cell = ws['A1'] cell.value = '=SUM(B1:B10)'
打印设置
-
设置打印区域:
ws.print_area = 'A1:D10' -
设置页眉和页脚:
ws.header_footer.center_header.text = "&[Date]" ws.header_footer.right_footer.text = "&[Page] of &[Pages]"
保护工作表
-
保护工作表:
ws.protection.password = 'password' ws.protection.enable() -
取消保护工作表:
ws.protection.disable()
其他功能
-
条件格式化:
from openpyxl.formatting import Rule from openpyxl.styles import PatternFill from openpyxl.styles.differential import DifferentialStylered_fill = PatternFill(start_color='FF0000', end_color='FF0000', fill_type='solid') dxf = DifferentialStyle(fill=red_fill) rule = Rule(type='expression', dxf=dxf, formula=['A1>10']) ws.conditional_formatting.add('A1:A10', rule) -
数据验证:
from openpyxl.worksheet.datavalidation import DataValidationdv = DataValidation(type='list', formula1='"Item1,Item2,Item3"', allow_blank=True) dv.add('A1') ws.add_data_validation(dv) -
超链接:
from openpyxl.cell import Cell from openpyxl.worksheet.hyperlink import Hyperlinkcell = ws['A1'] cell.value = 'Click here' cell.hyperlink = Hyperlink(display='Click here', ref='A1', location='https://www.example.com')
2. pandas 库
pandas 是一个强大的数据分析库,支持读取和写入 Excel 文件。它通常用于处理结构化数据,如表格数据
主要功能
- 读取 Excel 文件:将 Excel 文件加载为 DataFrame
- 写入 Excel 文件:将 DataFrame 保存为 Excel 文件
- 数据处理:支持数据筛选、排序、聚合等操作
- 多工作表操作:支持读取和写入多个工作表
import pandas as pd# 读取 Excel 文件
df = pd.read_excel("example.xlsx", sheet_name="Sheet1", engine='openpyxl')
print(df)# 数据处理
df['Age'] = df['Age'] + 1 # 将年龄加 1
print(df)# 写入 Excel 文件
df.to_excel("modified_example.xlsx", index=False)
3. xlrd 和 xlwt 库
xlrd 用于读取 Excel 文件(仅支持旧版 .xls 格式),xlwt 用于写入 Excel 文件(仅支持旧版 .xls 格式)
主要功能
- 读取 Excel 文件:xlrd 可以读取 .xls 文件的内容
- 写入 Excel 文件:xlwt 可以创建或修改 .xls 文件
import xlrd
import xlwt# 读取 Excel 文件
workbook = xlrd.open_workbook("example.xls")
sheet = workbook.sheet_by_index(0)
for row in range(sheet.nrows):print(sheet.row_values(row))# 写入 Excel 文件
workbook = xlwt.Workbook()
sheet = workbook.add_sheet("Sheet1")
sheet.write(0, 0, "Name")
sheet.write(0, 1, "Age")
sheet.write(1, 0, "Alice")
sheet.write(1, 1, 25)
workbook.save("example.xls")
4. xlsxwriter 库
xlsxwriter 一个专门用于写入 Excel 文件的库,支持创建复杂的 Excel 文件,如添加图表、公式、条件格式等
主要功能
- 创建 Excel 文件:支持创建 .xlsx 文件
- 高级功能:支持图表、公式、条件格式、数据验证等
- 样式设置:支持设置单元格样式
import xlsxwriter# 创建一个新的 Excel 文件
workbook = xlsxwriter.Workbook('example.xlsx')
worksheet = workbook.add_worksheet('Sheet1')# 写入数据
worksheet.write('A1', 'Name')
worksheet.write('B1', 'Age')
worksheet.write('A2', 'Alice')
worksheet.write('B2', 25)# 添加图表
chart = workbook.add_chart({'type': 'column'})
chart.add_series({'values': '=Sheet1!B2:B2'})
worksheet.insert_chart('D2', chart)# 保存文件
workbook.close()
5. pyxlsb 库
pyxlsb 用于读取 Excel 二进制文件(.xlsb 格式)
主要功能
- 读取 .xlsb** 文件**:支持读取 Excel 二进制文件
from pyxlsb import open_workbook# 读取 Excel 二进制文件
with open_workbook('example.xlsb') as wb:with wb.get_sheet(1) as sheet:for row in sheet.rows():print([item.v for item in row])
应用场景
- 数据导入导出:将数据库或其他数据源的数据导出为 Excel 文件,或从 Excel 文件中导入数据
- 报表生成:使用 openpyxl 或 xlsxwriter 生成带有图表和样式的报表
- 数据分析:使用 pandas 对 Excel 文件中的数据进行清洗、分析和可视化
- 自动化任务:批量处理多个 Excel 文件,如合并、拆分、格式转换等
参考资料
- openpyxl 官方文档
- pandas 官方文档
- xlrd 官方文档
- xlwt 官方文档
- xlsxwriter 官方文档
- pyxlsb 官方文档
相关文章:
python文件操作相关(excel)
python文件操作相关(excel) 1. openpyxl 库openpyxl其他用法创建与删除操作单元格追加数据格式化单元格合并单元格插入图片公式打印设置保护工作表其他功能 2. pandas 库3. xlrd 和 xlwt 库4. xlsxwriter 库5. pyxlsb 库应用场景参考资料 在 Python 中&a…...
探索React与Microi吾码的完美结合:快速搭建项目,低代码便捷开发教程
一、摘要 在当今的数字化时代,软件开发就像是一场探险,每个开发者都是探险家,探索着代码的奥秘。React作为前端开发的领军框架,其组件化和高效的渲染机制为开发者提供了强大的工具。而Microi吾码低代码平台的出现,则为…...
【面试系列】深入浅出 Spring Boot
熟悉SpringBoot,对常用注解、自动装配原理、Jar启动流程、自定义Starter有一定的理解; 面试题 Spring Boot 的核心注解是哪个?它主要由哪几个注解组成的?Spring Boot的自动配置原理是什么?你如何理解 Spring Boot 配置…...
@colyseus/social 模块详解
@colyseus/social 模块介绍 @colyseus/social 是一个适用于 Colyseus 游戏框架的扩展模块,提供了社交功能的支持,帮助开发者在多人游戏中快速实现玩家之间的社交互动。它主要提供了玩家账户管理、好友系统、好友请求、组队和聊天功能等,旨在简化游戏中社交功能的实现。 核心…...
石岩路边理发好去处
周末带娃去罗租公园玩,罗租公园旁边就是百佳华和如意豪庭小区,发现如意豪庭小区对面挺多路边理发摊点 理发摊点聚焦在这里的原因是刚好前面城管来了暂时避避,例如还有一个阿姨剪到一半就跟着过来。这里的城管只是拍了一处没有摊位的地方&…...
ROS 2中的DDS中间件
文章目录 一、简介二、默认支持的 DDS (Data Distribution Service) 实现三、切换DDS实现小结 一、简介 中间件是一个软件层,通常用于连接不同的应用程序、服务或系统,以便它们能够相互通信和交换数据。中间件并不直接向用户暴露,而是在系统…...
「下载」智慧文旅运营综合平台解决方案:整体架构,核心功能设计
智慧文旅运营综合平台,旨在通过集成大数据、云计算、物联网、人工智能等先进技术,为景区、旅游企业及相关管理机构提供一站式的智慧化运营服务。 智慧文旅运营综合平台不仅能够提升游客的游览体验,还能帮助景区管理者实现资源的优化配置和业务…...
NVR小程序接入平台EasyNVR使用FFmpeg取流时提示错误是什么原因呢?
在视频监控系统中,FFmpeg常用于从各种源(如摄像头、文件、网络流等)获取流媒体数据,这个过程通常称为“取流”。 在EasyNVR平台中,使用FFmpeg取流是一种常见的操作。FFmpeg作为一款强大的开源多媒体处理工具ÿ…...
计算机因进程结束导致白屏
问题场景: 计算机卡顿利用(右击计算机桌面底部任务栏->打开任务管理器->结束任务->或进程被意外结束导致白屏) 问题描述 白屏 原因分析: 在结束进程时,导致 文件资源管理器 进程崩溃。 解决方案…...
OpenGL入门最后一章观察矩阵(照相机)
前面的一篇文章笔者向大家介绍了模型变化矩阵,投影矩阵。现在只剩下最后一个观察矩阵没有和大家讲了。此片文章就为大家介绍OpenGL入门篇的最后一个内容。 观察矩阵 前面的篇章当中,我们看到了即使没有观察矩阵,我们也能对绘制出来的模型有一…...
ES6中定义私有属性详解
在ES6中,定义私有属性的方式相对传统的JavaScript有所不同。ES6并没有提供直接的语法来定义私有属性,但可以通过几种方法间接实现私有属性。 1. 使用Symbol来模拟私有属性 Symbol是一种新的数据类型,可以作为对象的键,并且它的值…...
工业5G路由器让无人机数据传输 “飞” 起来
无人机上搭载5G通信模块,该模块与工业5G路由器通过5G网络建立连接。无人机的飞控系统、传感器以及摄像头等设备采集到的数据,如飞行姿态、高度、速度、环境图像、温度湿度等,经过编码、加密、调制等处理后转换为适合5G网络传输的信号形式。 …...
面试经典150题——滑动窗口
文章目录 1、长度最小的子数组1.1 题目链接1.2 题目描述1.3 解题代码1.4 解题思路 2、无重复字符的最长子串2.1 题目链接2.2 题目描述2.3 解题代码2.4 解题思路 3、串联所有单词的子串3.1 题目链接3.2 题目描述3.3 解题代码3.4 解题思路 4、最小覆盖子串4.1 题目链接4.2 题目描…...
MiFlash 线刷工具下载合集
MiFlash 线刷工具下载合集 MiFlash 线刷工具下载合集 – MIUI历史版本相较于小米助手的刷机功能,线刷还是偏好使用 MiFlash。特点是界面简单纯粹,有自定义高级选项,可以选择刷机不上 BL 锁,自定义刷机脚本,EDL 刷机模…...
【MySQL高级】第1-4章
第1章 存储过程 1.1 什么是存储过程? 存储过程可称为过程化SQL语言,是在普通SQL语句的基础上增加了编程语言的特点,把数据操作语句(DML)和查询语句(DQL)组织在过程化代码中,通过逻辑判断、循环等操作实现复杂计算的程序语言。 换…...
课程设计项目之基于Python实现围棋游戏代码
项目介绍 游戏进去默认为九路玩法,当然也可以选择十三路或是十九路玩法 使用pycharam打开项目,pip安装模块并引用,然后运行即可, 代码每行都有详细的注释,可以做课程设计或者毕业设计项目参考 效果预览 源码下载 h…...
uni-app tab 双击事件监听
1、data中定义属性,用于临时记录点击次数 tabClick: {touchNum: 0 },2、添加页面事件监听方法 onTabItemTap(e) {this.tabClick.touchNumsetTimeout(()>{if(this.tabClick.touchNum > 2){// 双击执行代码区}this.tabClick.touchNum 0}, 250) },个人博客&am…...
如何在Maxscript脚本中检查磁盘可用空间?
在我们实际工作中,有时需要在工作开始之前检查磁盘的可用空间,比如渲染。 当然,我们可以人工很容易查看电脑中各个磁盘的空间使用情况,但是,如果是Maxscript插件完成的工作,那么如何才能实现其工作之前对磁…...
pytorch梯度上下文管理器介绍
PyTorch 提供了多种梯度上下文管理器,用于控制自动梯度计算 (autograd) 的行为。这些管理器在训练、推理和特殊需求场景中非常有用,可以通过显式地启用或禁用梯度计算,优化性能和内存使用。 主要梯度上下文管理器 torch.no_grad(): 功能&am…...
Redis Stream:实时数据处理的高效解决方案
Redis Stream:实时数据处理的高效解决方案 引言 在当今这个数据驱动的时代,实时数据处理对于各种应用场景都至关重要。Redis,作为一个高性能的键值存储系统,自然也紧跟这一趋势,推出了Redis Stream——一种用于处理实…...
KubeSphere 容器平台高可用:环境搭建与可视化操作指南
Linux_k8s篇 欢迎来到Linux的世界,看笔记好好学多敲多打,每个人都是大神! 题目:KubeSphere 容器平台高可用:环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...
微信小程序之bind和catch
这两个呢,都是绑定事件用的,具体使用有些小区别。 官方文档: 事件冒泡处理不同 bind:绑定的事件会向上冒泡,即触发当前组件的事件后,还会继续触发父组件的相同事件。例如,有一个子视图绑定了b…...
java 实现excel文件转pdf | 无水印 | 无限制
文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...
大数据零基础学习day1之环境准备和大数据初步理解
学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 (1)设置网关 打开VMware虚拟机,点击编辑…...
为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?
在建筑行业,项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升,传统的管理模式已经难以满足现代工程的需求。过去,许多企业依赖手工记录、口头沟通和分散的信息管理,导致效率低下、成本失控、风险频发。例如&#…...
Linux简单的操作
ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...
汽车生产虚拟实训中的技能提升与生产优化
在制造业蓬勃发展的大背景下,虚拟教学实训宛如一颗璀璨的新星,正发挥着不可或缺且日益凸显的关键作用,源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例,汽车生产线上各类…...
Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?
Redis 的发布订阅(Pub/Sub)模式与专业的 MQ(Message Queue)如 Kafka、RabbitMQ 进行比较,核心的权衡点在于:简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...
push [特殊字符] present
push 🆚 present 前言present和dismiss特点代码演示 push和pop特点代码演示 前言 在 iOS 开发中,push 和 present 是两种不同的视图控制器切换方式,它们有着显著的区别。 present和dismiss 特点 在当前控制器上方新建视图层级需要手动调用…...
适应性Java用于现代 API:REST、GraphQL 和事件驱动
在快速发展的软件开发领域,REST、GraphQL 和事件驱动架构等新的 API 标准对于构建可扩展、高效的系统至关重要。Java 在现代 API 方面以其在企业应用中的稳定性而闻名,不断适应这些现代范式的需求。随着不断发展的生态系统,Java 在现代 API 方…...
