[python3]Excel解析库-xlutils

`xlutils` 是一组用于处理 Excel 文件的 Python 库,它实际上是 `xlrd` 和 `xlwt` 的扩展,提供了额外的功能来操作 Excel 文件。`xlutils` 主要由三个部分组成:`xlutils.copy`、`xlutils.filter` 和 `xlutils.view`,它们分别用于复制和修改现有 Excel 文件、过滤数据以及查看 Excel 文件的内容。

 安装

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

```bash
pip3 install xlutils
```

由于 `xlutils` 依赖于 `xlrd` 和 `xlwt`,确保你也安装了这两个库(注意,对于 `.xls` 文件的支持,`xlrd` 版本应低于2.0.0,因为从2.0.0开始,`xlrd` 不再支持 `.xls` 文件):

```bash
pip install xlrd<2.0.0 xlwt
```

基本用法

#### 使用 `xlutils.copy` 修改现有文件`xlutils.copy` 允许你读取一个现有的 `.xls` 文件,并创建一个可编辑的副本。然后你可以对这个副本进行修改,最后保存为新的文件或覆盖原文件。```python
import xlrd
from xlutils.copy import copy# 打开现有的工作簿
rb = xlrd.open_workbook('example.xls', formatting_info=True)# 创建副本
wb = copy(rb)# 获取第一个工作表
sheet = wb.get_sheet(0)# 修改单元格内容
sheet.write(0, 0, 'Updated Value')# 保存更改到新文件
wb.save('updated_example.xls')
```#### 使用 `xlutils.filter` 过滤数据`xlutils.filter` 提供了一种机制,可以让你通过定义过滤器来自定义处理 Excel 文件的方式。例如,你可以编写一个过滤器来移除空白行或应用特定的格式化规则。```python
from xlutils.filter import process, XLRDReader, XLWTWriter
from xlrd import open_workbook
from xlwt import Workbookdef remove_blank_rows(record):if record.name == 'row':if not any(cell.value for cell in record.cells):return Falsereturn True# 打开现有的工作簿
book = open_workbook('example.xls')# 设置输入输出处理器
process(XLRDReader(book, 'example.xls'),XLWTWriter(),sheet_records=[remove_blank_rows]  # 应用过滤器
)# 保存结果到新文件
writer.save('filtered_example.xls')
```#### 使用 `xlutils.view` 查看文件内容`xlutils.view` 提供了一些简单的工具来查看 Excel 文件的内容,主要用于调试目的。例如,它可以将 Excel 表格转换为 HTML 格式以便在浏览器中查看。```python
from xlutils.view import view# 打开现有的工作簿并查看其内容
view('example.xls')
```### 注意事项- `xlutils` 只适用于 `.xls` 文件格式。如果你需要处理 `.xlsx` 文件,请考虑使用其他库如 `openpyxl` 或 `XlsxWriter`。
- 由于 `xlutils` 依赖于 `xlrd` 和 `xlwt`,而这些库已经不再积极维护,因此对于现代项目来说,可能更推荐使用更新的库来进行 Excel 文件的操作。
- 在处理较大文件时,`xlutils` 可能会遇到性能问题,因为它需要将整个文件加载到内存中进行处理。### 示例:完整代码示例以下是一个完整的例子,演示了如何使用 `xlutils` 修改现有的 `.xls` 文件并在其中添加新的数据:```python
import xlrd
from xlutils.copy import copydef update_excel_file(input_file, output_file):# 打开现有的工作簿rb = xlrd.open_workbook(input_file, formatting_info=True)# 创建副本wb = copy(rb)# 获取第一个工作表sheet = wb.get_sheet(0)# 添加新数据new_data = [['New Data 1', 'Value 1'],['New Data 2', 'Value 2']]start_row = sheet.nrows  # 获取当前行数以确定插入位置for row_index, row_data in enumerate(new_data, start=start_row):for col_index, value in enumerate(row_data):sheet.write(row_index, col_index, value)# 保存更改到新文件wb.save(output_file)if __name__ == "__main__":input_file = 'example.xls'output_file = 'updated_example.xls'update_excel_file(input_file, output_file)
```

总结

`xlutils` 是一个有用的工具集,特别适合那些需要频繁读取和修改 `.xls` 文件的项目。然而,考虑到 `xlrd` 和 `xlwt` 的局限性及其缺乏活跃维护的状态,在选择工具时应该权衡项目的长期需求和技术栈的选择。

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

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

相关文章

【数学建模笔记】评价模型-基于熵权法的TOPSIS模型

视频课地址&#xff1a;https://www.bilibili.com/video/BV1eRyVYUEhg 本系列文章和课程一样&#xff0c;只使用Python实现&#xff0c;好久没玩数学建模了 国赛中不能再用TOPSIS&#xff0c;可以做辅助算法。 1. 算法原理 熵权TOPSIS方法是一种结合熵权法和TOPSIS的决策分析…

当今世界如何减少暴戾之气和矛盾纷争

《消暴戾、减纷争》&#xff08;一&#xff09; 暴戾之气常见于陌生人之间、纷争矛盾常见于与陌生人、同事、朋友、家人之间&#xff0c;总之就是一切人际关系、交际 常见案例&#xff1a;路怒症、住户与外卖小哥的纷争&#xff0c;同事、朋友、家人之间的矛盾 小吵还好&#…

【情感】程序人生之情感关系中的平等意识(如何经营一段长期稳定的关系 沸羊羊舔狗自查表)

【情感】程序人生之情感关系中的平等意识&#xff08;如何经营一段长期稳定的关系 & 沸羊羊舔狗自查表&#xff09; 文章目录 1、情感关系中的平等意识2、如何经营一段长期稳定的关系&#xff08;避免左倾 | 敬畏与担当&#xff09;3、沸羊羊/舔狗自查表&#xff08;避免右…

让css设置的更具有合理性

目录 一、合理性设置宽高 二、避免重叠情况&#xff0c;不要只设置最大宽 三、优先使用弹性布局特性 四、单词、数字换行处理 五、其他编码建议 平常写css时&#xff0c;除了遵循一些 顺序、简化、命名上的规范&#xff0c;让css具有合理性也是重要的一环。 最近的需求场…

Go小技巧易错点100例(二十一)

本篇内容&#xff1a; errors.Is方法与两种方式进行error比较 在Go语言中&#xff0c;处理错误&#xff08;error 类型&#xff09;时&#xff0c;errors.Is 和直接使用 操作符进行错误比较&#xff0c;虽然看起来都用于比较错误&#xff0c;但实际上它们有着根本的不同。这主…

【服务器项目部署】✈️将本地项目部署到服务器(二)!

目录 &#x1f44b;前言 &#x1f440;一、功能调整 &#x1f331;二、服务部署 &#x1f49e;️三、代码调整 &#x1f37b;四、章末 &#x1f44b;前言 小伙伴们大家好&#xff0c;上篇文章本地实践了如何将本地项目部署到服务器上&#xff0c;从服务器的选择、服务器环境…

Kafka消息队列

目录 前置内容常用脚本说明和示例描述与定义部分术语说明两种模式点对点模式发布订阅模式 topic主题命令行操作指令生产者Broker消费者 前置内容 队列&#xff1a; 先进先出 应用&#xff1a; 大数据中主要用于离线和实时处理 流程&#xff1a; Flume正常获取数据&#xff0c;…

如何使用 Ansys OptiSlang 同时运行多个参数化设计研究

了解如何通过使用 OptiSLang 同时运行多个参数化设计研究来提高工作效率。 了解参数化设计研究的重要性 参数化设计研究在工程和设计过程中起着至关重要的作用。通过改变输入参数&#xff0c;工程师可以探索不同设计选择的效果&#xff0c;并优化其设计以满足性能、成本或其他…

Nginx (40分钟学会,快速入门)

一、什么是Nginx ? 可以做什么 &#xff1f; Nginx 是高性能的 HTTP 和反向代理的 web 服务器&#xff0c;处理高并发能力是十分强大的&#xff0c;能经受高负载的考验&#xff0c;有报告表明能支持高达50000个并发的连接数.Nginx特点就是内存少&#xff0c;并发能力强。事实上…

【Rust自学】10.6. 生命周期 Pt.2:生命周期的语法与例子

喜欢的话别忘了点赞、收藏加关注哦&#xff0c;对接下来的教程有兴趣的可以关注专栏。谢谢喵&#xff01;(&#xff65;ω&#xff65;) 10.6.1. 生命周期标注语法 生命周期的标注并不会改变引用的生命周期长度。如果某个函数它制定了泛型生命周期参数&#xff0c;那么它就可…

【Android项目学习】3. MVVMHabit

项目链接 文章目录 一. 项目结构1. 项目整体划分2. 模块细分 二. Android知识点学习1. registerActivityLifecycleCallbacks方法2. 一. 项目结构 1. 项目整体划分 MVVMHabit是以谷歌DataBindingLiveDataViewModel框架为基础&#xff0c;整合OkhttpRxJavaRetrofitGlide等流行…

【大模型】7 天 AI 大模型学习

7 天 AI 大模型学习 Day 3 今天&#xff0c;我们要一起学习大模型微调了 &#xff5e; 包括&#xff1a;大模型微调领域概览、Lora微调 等 &#xff5e; 文章目录 7 天 AI 大模型学习 Day 3大模型微调概览大模型项目 pipeline提示词工程 Prompt EngineeringIn-context Learning…

密码学精简版

密码学是数学上的一个分支&#xff0c;同时也是计算机安全方向上很重要的基础原理&#xff0c;设置密码的目的是保证信息的机密性、完整性和不可抵赖性&#xff0c;安全方向上另外的功能——可用性则无法保证&#xff0c;可用性有两种方案保证&#xff0c;冗余和备份&#xff0…

DeepSeek-V3 正式发布,已在网页端和 API 全面上线,性能领先,速度飞跃。

DeepSeek-V3 在推理速度上相较历史模型有了大幅提升。在目前大模型主流榜单中&#xff0c;DeepSeek-V3 在开源模型中位列榜首&#xff0c;与世界上最先进的闭源模型不分伯仲。 简介 DeepSeek-V3是一个强大的混合专家 (MoE) 语言模型&#xff0c;总共有 671B 个参数&#xff0c;…

图像超分辨新SOTA!南洋理工提出InvSR,利用大型预训练扩散模型图像先验来提高 SR 性能, 登上Huggingface热门项目。

南洋理工大学的研究者们提出了一种基于扩散反演的新型图像超分辨率 (SR) 技术&#xff0c;可以利用大型预训练扩散模型中蕴含的丰富图像先验来提高 SR 性能。 该方法的核心是一个深度噪声预测器&#xff0c;用于估计前向扩散过程的最佳噪声图。一旦训练完成&#xff0c;这个噪…

MySQL低版本没有函数row_number() over的解决方案

最近在维护老项目时&#xff0c;需要对历史数据做分析取出分区数据中的第一条&#xff0c;无奈因为MySQL版本过低&#xff0c;无法使用函数row_number() over&#xff0c;苍了个天~ 不过这点小事怎么可能难倒我们这群考古专家呢&#xff0c;在此分享一下解决方案。 主要原因是问…

贵州省贵安新区地图+全域数据arcgis格式shp数据矢量路网地名+卫星影像底图下载后内容测评

贵州省贵安新区地图全域数据arcgis格式shp数据矢量路网地名卫星影像底图 贵安新区地图是一款基于ArcGIS格式的地理信息系统数据集&#xff0c;包含2022年3月更新的详尽矢量路网、地名信息以及卫星影像底图。这款数据集是针对贵安新区这一特定区域设计的&#xff0c;对于规划、…

npm install --global windows-build-tools --save 失败

注意以下点 为啥下载windows-build-tools&#xff0c;是因为node-sass4.14.1 一直下载不成功&#xff0c;提示python2 没有安装&#xff0c;最终要安装这个&#xff0c;但是安装这个又失败&#xff0c;主要有以下几个要注意的 1、node 版本 14.21.3 不能太高 2、管理员运行 …

音视频入门基础:MPEG2-PS专题(5)——FFmpeg源码中,解析PS流中的PES流的实现

一、引言 从《音视频入门基础&#xff1a;MPEG2-PS专题&#xff08;3&#xff09;——MPEG2-PS格式简介》中可以知道&#xff0c;PS流由一个个pack&#xff08;包装&#xff09;组成。一个pack 一个pack_header 一个或多个PES_packet。pack_header中还可能存在system header…

记一次k8s下容器启动失败,容器无日志问题排查

问题 背景 本地开发时&#xff0c;某应用增加logback-spring.xml配置文件&#xff0c;加入必要的依赖&#xff1a; <dependency><groupId>net.logstash.logback</groupId><artifactId>logstash-logback-encoder</artifactId><version>8…