[python3]Excel解析库-calamine,10倍openpyxl性能

embedded/2025/1/8 18:27:09/

`calamine` 是一个用于读取多种电子表格格式(如 Excel、LibreOffice Calc 等)的 Python 库。它支持 `.xls`, `.xlsx`, `.ods` 和 `.csv` 文件格式,提供了简单易用的 API 来加载和处理电子表格数据。`calamine` 的一大特点是它的轻量级和高效性,特别适合需要快速解析电子表格而不依赖于重量级库(如 `openpyxl` 或 `pandas`)的应用场景。

安装

要使用 `calamine`,首先需要通过 `pip` 安装它:

```bash
pip3 install calamine
```

基本用法

#### 读取 Excel 文件以下是如何使用 `calamine` 读取 Excel 文件并获取其中的数据:```python
from calamine import Workbook, CellType# 打开工作簿
workbook = Workbook.open("example.xlsx")# 获取所有的工作表名称
sheet_names = workbook.sheet_names()
print(f"Sheet names: {sheet_names}")# 选择第一个工作表
sheet = workbook.get_sheet_by_index(0)# 遍历所有行
for row in sheet.rows():# 每一行是一个列表,包含每个单元格的值print([cell.value for cell in row if cell.type != CellType.EMPTY])# 关闭工作簿
workbook.close()
```#### 读取 ODS 文件对于 OpenDocument Spreadsheet (ODS) 文件,操作方式类似:```python
from calamine import Workbook, CellType# 打开 ODS 工作簿
workbook = Workbook.open("example.ods")# 选择第一个工作表
sheet = workbook.get_sheet_by_index(0)# 遍历所有行
for row in sheet.rows():print([cell.value for cell in row if cell.type != CellType.EMPTY])# 关闭工作簿
workbook.close()
```#### 读取 CSV 文件虽然 CSV 文件不是严格意义上的电子表格文件,但 `calamine` 同样可以方便地处理它们:```python
from calamine import Workbook, CellType# 打开 CSV 文件
with open("example.csv", "r") as f:workbook = Workbook.from_csv(f)# 选择唯一的工作表sheet = workbook.get_sheet_by_index(0)# 遍历所有行for row in sheet.rows():print([cell.value for cell in row if cell.type != CellType.EMPTY])
```### 处理单元格类型`calamine` 支持多种单元格类型,并允许你根据需要访问不同类型的数据:```python
from calamine import CellType# 假设我们已经打开了一个工作簿并选择了某个工作表
for row in sheet.rows():for cell in row:if cell.type == CellType.STRING:print(f"String value: {cell.value}")elif cell.type == CellType.NUMBER:print(f"Number value: {cell.value}")elif cell.type == CellType.BOOL:print(f"Boolean value: {cell.value}")elif cell.type == CellType.ERROR:print(f"Error value: {cell.error}")elif cell.type == CellType.FORMULA:print(f"Formula: {cell.formula}, Result: {cell.value}")elif cell.type == CellType.EMPTY:print("Empty cell")
```### 获取特定单元格的值如果你知道具体的单元格位置(例如 A1),可以直接获取其值:```python
# 获取 A1 单元格的值
value = sheet.get_value("A1")
print(f"Value at A1: {value}")
```### 更多高级功能- **遍历列**:除了按行遍历外,还可以按列遍历。
- **合并单元格**:支持检测和处理合并的单元格。
- **样式信息**:尽管 `calamine` 主要关注数据本身,但它也提供了一些基础的样式信息访问方法。
- **公式计算**:如果需要计算公式的结果,可以在读取时指定参数来启用此功能。### 示例:完整代码示例以下是一个完整的例子,演示了如何使用 `calamine` 读取 Excel 文件中的数据,并进行简单的数据处理:```python
from calamine import Workbook, CellTypedef read_excel(file_path):workbook = Workbook.open(file_path)sheet = workbook.get_sheet_by_index(0)data = []for row in sheet.rows():row_data = [cell.value for cell in row if cell.type != CellType.EMPTY]if row_data:data.append(row_data)workbook.close()return dataif __name__ == "__main__":file_path = "example.xlsx"data = read_excel(file_path)# 打印前几行数据作为示例for row in data[:5]:print(row)
```

### 总结

`calamine` 是一个非常轻便且高效的工具,适用于需要快速解析多种格式电子表格的应用程序。它提供的 API 简单直观,易于集成到现有项目中。

10倍性能,待验证。


http://www.ppmy.cn/embedded/152050.html

相关文章

win11访问共享文件出现Windows无法访问,错误代码:0x80070035,找不到网络路径;或者输入对方IP 弹出来:出现了扩展错误

因为我对局域网内的所有电脑点击去都是0x80070035,找不到网络路径;而局域网内其他电脑互相访问都是正常的 ,说明问题肯定出现在我的电脑上,网路上搜索了很久都没有找到点子上,直到找到了微软的文章:控制 SM…

[网络安全]shiro安全框架基本原理

前言 本文为Shiro框架简介,无安全,不shiro shiro简介 shiro安全框架问世的意义在于提供了一种有效的解决方案,帮助开发者和企业更好地保护自己的系统和数据安全。 Shiro 可以与各种 Java 框架和应用程序进行集成,如 Spring、Sp…

学习笔记|arduino uno r3| RGB 灯珠|Atmega328P|PWM|analogWrite|analogRead函数: RGB灯珠呼吸灯

目录 RGB 灯珠呼吸灯实验RGB 灯珠实验概述工作原理组件清单接线程序代码编译和执行 Tips: Arduino常用的函数解释analogWrite(pin, value)函数analogRead(pin)函数 总结 RGB 灯珠呼吸灯实验 RGB 灯珠实验概述 1-三色LED黑板模块的PCB颜色为黑色,使用5M…

Java基于微信小程序的私家车位共享系统

✌程序员徐师兄,拥有7年大厂开发经验,全网粉丝超过12万。 CSDN博客专家,掘金、华为云、阿里云、InfoQ等多个平台的优质作者,专注Java技术领域以及毕业设计实战项目分享。 🍅获取源码联系🍅 👇&a…

《深度解析:VAEs如何重塑数据生成与重建格局》

在人工智能领域,数据的生成与重建一直是研究的热点。变分自编码器(VAEs)作为一种强大的生成模型,在这方面展现出了独特的魅力。无论是图像生成、语音合成,还是医疗数据的分析处理,VAEs的身影无处不在&#…

Tailwind CSS 实战:性能优化最佳实践

在现代网页开发中,性能优化就像是一场精心策划的马拉松。记得在一个电商项目中,我们通过一系列的性能优化措施,让页面加载时间减少了 60%,转化率提升了 25%。今天,我想和大家分享如何使用 Tailwind CSS 进行性能优化。 优化理念 性能优化就像是在打磨一块璞玉。我们需要通过各…

安全对讲需求大增,遨游PDT数字集群对讲机如何担此重任?

近年来,随着警务、消防等行业对通信协作安全性的要求日益提高,PDT数字集群通信标准应运而生。作为由中国自主制定的通信标准,PDT不仅融合了国际成熟技术的精华,更充分考虑了中国国情与实际需求。为了实现更安全、高效的指挥调度&a…

开源人工智能模型框架:探索与实践

摘要 本文深入探讨了开源人工智能模型框架,旨在为研究人员、开发者及相关从业者提供全面的理解与参考。通过对多个主流开源框架,如TensorFlow、PyTorch、Keras、Detectron2、OpenCV、Hugging Face Transformers、AllenNLP、MindSpore和Fastai的详细分析…