Python 如何操作 Excel 文件(openpyxl, xlrd)

Python是处理Excel文件的一种非常强大且灵活的工具,尤其是通过使用openpyxlxlrd等库。openpyxl专注于Excel 2007及更高版本的.xlsx文件的创建、读取、修改和写入,而xlrd则主要用于读取早期版本的Excel文件(.xls),但自从2020年xlrd库不再支持.xlsx文件,因此它的主要用途现在局限于读取.xls文件。

一、安装库

在使用这些库之前,我们需要先安装它们。可以通过以下命令安装:

pip install openpyxl
pip install xlrd

openpyxl 是一个更现代的库,主要用于处理.xlsx格式的文件,而xlrd 在新版更新后仅支持.xls文件的读取操作。

二、openpyxl库的使用

1. 创建Excel文件

首先,我们可以通过openpyxl创建一个新的Excel文件,并向其中写入数据:

from openpyxl import Workbook# 创建一个新的工作簿
wb = Workbook()# 激活默认的工作表
ws = wb.active# 写入数据到工作表
ws['A1'] = 'Hello'
ws['B1'] = 'World'# 保存工作簿
wb.save("example.xlsx")

在上面的代码中,我们首先创建了一个工作簿,然后激活了默认的工作表,并向A1和B1单元格中写入了数据,最后将工作簿保存为example.xlsx

2. 读取Excel文件

openpyxl也可以用于读取现有的Excel文件:

from openpyxl import load_workbook# 加载已有的工作簿
wb = load_workbook("example.xlsx")# 选择活动工作表
ws = wb.active# 读取单元格数据
print(ws['A1'].value)  # 输出:Hello
print(ws['B1'].value)  # 输出:World

load_workbook()函数用于加载现有的工作簿,并返回一个Workbook对象,然后可以通过.active属性访问默认的工作表。

3. 操作工作表

openpyxl中,我们可以轻松地操作工作表,例如创建新的工作表、修改工作表名称、删除工作表等:

# 创建新工作表
ws1 = wb.create_sheet("NewSheet")# 修改工作表名称
ws1.title = "MySheet"# 删除工作表
wb.remove(ws1)# 或者使用 del 关键字
del wb["MySheet"]
4. 写入和修改数据

openpyxl允许我们使用不同的方式写入数据,除了通过单元格坐标,还可以通过遍历行和列的方式批量操作数据:

# 批量写入数据
for row in range(1, 10):for col in range(1, 5):ws.cell(row=row, column=col, value=f"Row {row}, Col {col}")# 修改单元格的值
ws['A1'] = 'Updated Value'

在上面的代码中,我们通过ws.cell()方法可以指定行和列,使用嵌套循环快速填充数据。

5. 单元格样式

除了读写数据外,openpyxl还支持修改单元格的样式,例如字体、边框、颜色等:

from openpyxl.styles import Font, Color, Alignment# 设置单元格字体
ws['A1'].font = Font(size=14, bold=True)# 设置单元格对齐方式
ws['A1'].alignment = Alignment(horizontal='center', vertical='center')# 设置单元格填充颜色
from openpyxl.styles import PatternFill
ws['A1'].fill = PatternFill("solid", fgColor="00FF00")

openpyxl.styles模块提供了丰富的样式选项,允许我们根据需求定制Excel文件的外观。

6. 处理公式

openpyxl还支持Excel中的公式。例如:

# 添加一个简单的加法公式
ws['C1'] = '=A1+B1'# 手动计算公式(注意:需要 Excel 应用程序打开此文件后才能真正计算)
wb.save("formula_example.xlsx")

虽然openpyxl可以写入和读取公式,但实际的计算需要Excel应用程序本身来执行。

三、xlrd库的使用

xlrd专注于读取Excel文件,特别是xls格式。虽然它不再支持读取xlsx文件,但对于处理旧版的Excel文件依然很有用。

1. 读取Excel文件

使用xlrd读取Excel文件非常简单:

import xlrd# 打开一个Excel文件
book = xlrd.open_workbook('example.xls')# 获取第一个工作表
sheet = book.sheet_by_index(0)# 读取单元格数据
print(sheet.cell_value(0, 0))  # 输出第1行第1列的数据

这里我们通过xlrd.open_workbook()函数打开了一个.xls文件,然后通过sheet_by_index()方法获取工作表,并通过sheet.cell_value()读取单元格的内容。

2. 获取工作表信息

xlrd可以帮助我们获取更多关于工作表的信息,例如行数、列数等:

# 获取工作表名称
print(sheet.name)# 获取工作表的行数和列数
print(sheet.nrows)
print(sheet.ncols)

这对于遍历整个表格的内容是非常有用的。

3. 遍历单元格数据

xlrd允许我们轻松遍历整个工作表中的数据:

# 遍历行数据
for row_idx in range(sheet.nrows):row = sheet.row(row_idx)for col_idx, cell in enumerate(row):print(f"({row_idx}, {col_idx}) = {cell.value}")

上面的代码示例展示了如何遍历工作表中的所有数据,逐行输出每个单元格的内容。

四、openpyxlxlrd的配合使用

在某些场景下,我们可能需要处理.xls.xlsx两种文件格式。这时,可以结合使用openpyxlxlrd。例如,我们可以使用xlrd读取.xls文件,然后使用openpyxl将其转换为.xlsx格式:

import xlrd
from openpyxl import Workbook# 使用xlrd打开xls文件
xls_book = xlrd.open_workbook('example.xls')
xls_sheet = xls_book.sheet_by_index(0)# 创建一个新的xlsx文件
wb = Workbook()
ws = wb.active# 将xls数据复制到xlsx
for row_idx in range(xls_sheet.nrows):for col_idx in range(xls_sheet.ncols):ws.cell(row=row_idx+1, column=col_idx+1, value=xls_sheet.cell_value(row_idx, col_idx))# 保存新的xlsx文件
wb.save('converted_example.xlsx')

这样,通过结合xlrdopenpyxl,我们可以轻松实现不同Excel格式之间的转换和处理。

openpyxl主要用于处理现代的.xlsx文件,而xlrd则用于读取老旧的.xls文件格式。通过结合这两个库,我们可以灵活地处理各种Excel文件格式,并根据需要进行数据转换和格式定制。

在实际应用中,根据文件格式的不同选择合适的库进行操作,可以提高代码的效率和兼容性。掌握这两个库的使用,将为数据处理和分析领域提供极大的便利。

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

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

相关文章

【教你一键解决】draw.io中输入英文显示成中文且输入位置移到首位

问题描述:当英文输入一个“a”时,会自动出现中文“一个”,再输入“a”才会出现“a”,删除时无法把中文删除,如下图所示。 解决方法:关闭浏览器的自动翻译功能即可,如下图所示。

HTTPS协议中的加密机制分析、证书认证

目录 一、为什么要对数据进行加密? 二、什么是加密和解密? 三、加密方式 对称加密 非对称加密 四、数据摘要(数据指纹) 五、数字签名 六、探究保证双方通信安全的的加密方案 1、只使用对称加密 2、只使用非对称加密 3、双方都是用非对称加密 …

怎么理解数据资源、数据资产和数据要素?

身处信息化时代,我们每时每刻都在产生和接触各类数据,如网购记录、短视频等。在我国数据安全法中将数据定义为任何以电子或其他方式对信息的记录。即数据不仅指数字表格等结构化内容,也可以是文字、图形、图像等半结构化、非结构化信息。 1、…

航空制造领域中三维工艺技术的应用

飞机制造企业可以通过三维数字化技术的应用有效提升了工艺设计水平,解决了在航空产品数字化工艺设计、制造方面的标准统一和系统整合等问题,保证了业务应用系统基础数据的一致性和规范性。本文是对航空制造领域中三维工艺技术的应用的介绍。 随着信息化技…

安装JKS格式证书

--千金易得 知己难求 本文介绍如何在Tomcat服务器配置JKS格式的SSL证书,具体包括下载和上传证书文件,在Tomcat上配置证书文件和证书密码等参数,以及安装证书后结果的验证。成功配置SSL证书后,您将能够通过HTTPS加密通道安全访问To…

ffmpeg教程及加速视频转码

ffmpeg教程及加速视频转码 1、ffmpeg简介: ffmpeg来自MPEG视频编码标准。 是一套可以用来记录,转换数字音频、视频,并能将其转化为流的开源计算机程序。 可以轻易的实现多种视频格式之间的相互转换。 2、基础知识: 容器、文件…

FDM3D打印系列——创想三维打印机卡料修复后续处理

大家好,我是阿赵。   之前我的创想三维Sermoon v1打印机卡料了,我自己拆开打印头组件,把卡料的地方修复了。   但问题并没有彻底的解决。在后续打印之中,还是经常出现卡料。有些需要打印实际个小时的模型,在打印了…

基于Material Design风格开源的Avalonia UI控件库

前言 今天大姚给大家分享一款基于Material Design风格开源、免费(MIT License)的Avalonia UI控件库:Material.Avalonia。 当前项目还处于alpha阶段。 Avalonia介绍 Avalonia是一个强大的框架,使开发人员能够使用.NET创建跨平台应…

内网穿透的应用-如何使用跨平台终端Tabby结合内网穿透工具异地远程ssh访问Ubuntu系统

文章目录 前言1. Tabby下载安装2. Tabby相关配置3. Tabby简单操作4. ssh连接Linux4.1 ubuntu系统安装ssh4.2 Tabby远程ssh连接ubuntu 5. 安装内网穿透工具5.1 创建公网地址5.2 使用公网地址远程ssh连接 6. 配置固定公网地址 前言 今天和大家分享一下如何在Windows系统使用Tabb…

Trimming项目完整流程

Trimming项目完整流程 FsmStates状态机 public enum FsmStates {// 初始状态,FSM 启动后的第一个状态Initial,// 等待序列化过程控制器(SPS)启动的状态// 在此状态下,FSM 等待外部系统或设备准备就绪WaitOnSPSStart,// 加载数据库…

【使用python实现多目标批量ping】附案例

以下为使用 Python 实现批量 ping 的多种方法及代码示例: 方法一: import subprocessfilepath E:\\Python\\tools\\AutoMatic\\hosts.txt with open(filepath, r) as f:hosts f.readlines()for host in hosts:result subprocess.check_output((ping…

C语言典型例题55

《C程序设计教程(第四版)——谭浩强》 题目: 例题4.7 兔子的繁殖。这是一个有趣的古典问题:有一对兔子,从出生后的第3个月开始起每个月都生一对兔子。小兔子长到第3个月又生一对兔子。假设所有兔子都不死,…

大模型的latency(延迟)和throughput(吞吐量)有什么区别?

1. 导入 为了快速应用大模型,我们需要采购商业大模型。采购前,对接销售时,我们描述了我们的场景和需求: Q:我们的prompts token数量在1500-2000之间,completion token数量在500左右。这种情况下&#xff…

同三维S20和S20K系列高清和4K摄像机说明书:高清HDMI摄像机

同三维S20和S20K系列高清和4K摄像机 视频会议摄像机概述前言 非常感谢您使用本公司视频会议产品!在使用本产品之前,敬请仔细阅读使用手册。本手册详细介绍了多功能视频会议摄像机的功能、安装和使用操作的一般原则及方法。本系列视频会议摄像机是一款高性能、高灵敏…

设计模式 -- 外观模式(Facade Pattern)

1 问题引出 组建一个家庭影院 DVD 播放器、投影仪、自动屏幕、环绕立体声、爆米花机,要求完成使用家庭影院的功能,其过程为: 直接用遥控器:统筹各设备开关 开爆米花机,放下屏幕 ,开投影仪 ,开音响&#xf…

【云原生】Kubernetes中如何通过Pod名称查询Docker容器ID,通过Docker容器ID查询Pod名称?

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全…

FGF23:家族靶向治疗先行者

成纤维细胞生长因子23(FGF23)属于FGF19亚家族成员,由成骨细胞、骨细胞和骨髓合成,是磷酸盐和钙稳态的重要调节剂,同时与铁稳态、炎症和红细胞生成也有关。 (数据来源AlphaFold) FGF23由251个氨…

Git 学习

一、基本使用 1. 基本理论 Git 是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的项目;版本控制是一种记录一个或者若干个文件内容变化,以便来查阅特定版本修订情况的系统 集中化版本控制系统:SVN, CV…

应急响应--日志分析

应急响应–日志分析 文章目录 一、Windows日志二、Linux日志三、Web日志 3.1、IIS中间件日志3.2、Apache中间件日志3.3、Tomcat中间件日志3.4、Weblogic3.5、Nginx中间件日志 一、Windows日志 Windows日志记录着Windows系统中硬件、软件和系统问题的信息,同时还…

基于imx6ull平台opencv的图像采集、ffmpeg推流和Windows端拉流(多线程)

目录 一、概述二、环境要求2.1 硬件环境2.2 软件环境三、开发流程3.1 编写测试3.2 验证功能一、概述 本文档是针对imx6ull平台opencv的图像采集、ffmpeg推流和Windows端拉流。首先创建一个线程opencv通过摄像头采集视频图像,接着再创建两个线程,其中一个线程获取采集的视频图…