17.使用读写包操作Excel文件:pyxlsb 包

一 pyxlsb 的介绍

如果你要读取二进制的 xlsb 格式的 Excel 文件,那么 pyxlsb 就成了唯一选择。
.xlsb 是 Excel 的二进制文件格式,专为高效存储和快速读取设计。

pyxlsb 是一个专门用于读取 .xlsb 文件的 Python 库,但不支持写入。


二 如何使用

1.遍历 .xlsb 文件中的所有工作表,并打印每个工作表的行数和列数

python 复制代码
import pyxlsb
import excel

with pyxlsb.open_workbook("xl/stores.xlsb") as book:
 for sheet_name in book.sheets:
  with book.get_sheet(sheet_name) as sheet:
   dim = sheet.dimension
   print(f"Sheet '{sheet_name}' has "f"{dim.h} rows and {dim.w} cols")

**book.sheets:**返回一个工作簿中所有工作表的名称列表。

for sheet_name in book.sheets:遍历工作簿中的所有工作表名称。

**book.get_sheet(sheet_name):**获取某个具体的工作表对象(通过名称)。

sheet.dimension: 获取工作表的维度,包括:dim.h: 工作表的总行数。dim.w: 工作表的总列数。

**print():**打印每个工作表的名称以及其行数和列数。

2.读取特定工作表(如 "2019")中从 "B2" 开始的某些数据,并打印前两行

python 复制代码
with pyxlsb.open_workbook("xl/stores.xlsb") as book:
 with book.get_sheet("2019") as sheet:
  data = excel.read(sheet, "B2")
print(data[:2])  # 打印前两行

with book.get_sheet("2019"): 通过工作表名称索引打开名为 "2019" 的工作表。

excel.read(sheet, "B2") :使用 excel 模块(自定义模块)从指定单元格("B2")开始读取数据。返回一个列表的结构,保存读取到的值。

3.将以日期为格式的单元格中的值转换为 datetime 对象

pyxlsb 库在读取 .xlsb 文件时,无法直接识别和解析包含日期的单元格。它会将这些日期值作为原始的数值数据(例如浮点时间戳)返回。因此,用户需要手动将这些数值转换为 Python 的 datetime 对象。

python 复制代码
from pyxlsb import convert_date

# 假设 data[1][3] 是从某个单元格读取到的日期值(数值格式)
converted_date = convert_date(data[1][3])

# 转换后得到的是一个 datetime 对象,例如:
# datetime.datetime(2018, 7, 20, 0, 0)

convert_datepyxlsb 提供的一个实用函数,用于将以数字形式存储的日期值转换为 Python 的 datetime.datetime 对象。

data[1][3] 表示第二行第四列的值。如果这个单元格包含日期,那么它的值可能是一个浮点数,表示 Excel 内部的时间戳。

调用 convert_date(data[1][3]) 会将这个浮点数转换为一个 datetime.datetime 对象。转换后可能得到 datetime.datetime(2018, 7, 20, 0, 0),这表示日期为 2018 年 7 月 20 日,时间为午夜(00:00)。

4.在使用版本低于 1.3 的 pandas 读取 xlsb 格式的文件时,需要显式地指定引擎

python 复制代码
 df = pd.read_excel("xl/stores.xlsb", engine="pyxlsb")
相关推荐
火车叼位几秒前
也许你不需要创建.venv, 此规范使python脚本自备依赖
python
火车叼位7 分钟前
脚本伪装:让 Python 与 Node.js 像原生 Shell 命令一样运行
运维·javascript·python
孤狼warrior18 分钟前
YOLO目标检测 一千字解析yolo最初的摸样 模型下载,数据集构建及模型训练代码
人工智能·python·深度学习·算法·yolo·目标检测·目标跟踪
Katecat9966328 分钟前
YOLO11分割算法实现甲状腺超声病灶自动检测与定位_DWR方法应用
python
实时数据1 小时前
一手资料结合大数据分析挖掘海量信息中的价值了解用户真实需求 实现精准营销
数据挖掘·数据分析
龙腾AI白云1 小时前
面向开放世界的具身智能泛化能力探索
数据挖掘
玩大数据的龙威1 小时前
农经权二轮延包—各种地块示意图
python·arcgis
ZH15455891311 小时前
Flutter for OpenHarmony Python学习助手实战:数据库操作与管理的实现
python·学习·flutter
belldeep1 小时前
python:用 Flask 3 , mistune 2 和 mermaid.min.js 10.9 来实现 Markdown 中 mermaid 图表的渲染
javascript·python·flask
喵手1 小时前
Python爬虫实战:电商价格监控系统 - 从定时任务到历史趋势分析的完整实战(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·电商价格监控系统·从定时任务到历史趋势分析·采集结果sqlite存储