当前位置: 首页 > news >正文

[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.lryc.cn/news/518493.html

相关文章:

  • Springboot Bean创建流程、三种Bean注入方式(构造器注入、字段注入、setter注入)、循坏依赖问题
  • mybatisX插件的使用,以及打包成配置
  • 【初阶数据结构】线性表之单链表
  • CentOS7通过yum安装JDK
  • c# 常见的几种取整场景
  • 数据库回滚:大祸临头时
  • 【GoLang】两个字符串如何比较大小?以及字典顺序的比较规则
  • 5G学习笔记之SNPN系列之UE入网和远程配置
  • C#版OpenCv常用函数大全
  • Spring Boot教程之五十二:CrudRepository 和 JpaRepository 之间的区别
  • 蓝桥杯备考:数据结构之栈 和 stack
  • solidity基础 -- 映射
  • Angular 11课程实践:构建高效单页应用的支持代码
  • 测试用例颗粒度说明
  • ESP32 IDF VScode出现头文件“无法打开 源 文件 ”,并有红色下划线警告
  • Windows安装ES单机版设置密码
  • Linux Docker
  • MSE学习
  • 0-基于蚁群优化和带注意力机制的循环神经网络的新型混合算法用于解决旅行商问题(HAL science)(完)
  • MIUI显示/隐藏5G开关的方法,信号弱时开启手机Wifi通话方法
  • 挑战20天刷完leecode100
  • Java列表示例
  • Objective-C语言的网络编程
  • 安卓OCR使用(Google ML Kit)
  • 《机器学习》——贝叶斯算法
  • 【博主推荐】 Microi吾码开源低代码平台,快速建站,提高开发效率
  • 网站自动签到
  • C 语言奇幻之旅 - 第16篇:C 语言项目实战
  • 项目实战——使用python脚本完成指定OTA或者其他功能的自动化断电上电测试
  • 04、Redis深入数据结构