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

devtools/2025/3/15 12:56:10/

一 pyxlsb 的介绍

如果你要读取二进制的 xlsb 格式的 Excel 文件,那么 pyxlsb 就成了唯一选择。

.xlsb 是 Excel 的二进制文件格式,专为高效存储和快速读取设计。

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


二 如何使用

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

python">import pyxlsb
import excelwith pyxlsb.open_workbook("xl/stores.xlsb") as book:for sheet_name in book.sheets:with book.get_sheet(sheet_name) as sheet:dim = sheet.dimensionprint(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_date 是 pyxlsb 提供的一个实用函数,用于将以数字形式存储的日期值转换为 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")


http://www.ppmy.cn/devtools/167292.html

相关文章

SpringCloud带你走进微服务的世界

认识微服务 随着互联网行业的发展,对服务的要求也越来越高,服务架构也从单体架构逐渐演变为现在流行的微服务架构。这些架构之间有怎样的差别呢? 单体架构 单体架构:将业务的所有功能集中在一个项目中开发,打成一个…

前端性能优化指南

一、快速启动项目 1.1基础Webpack配置 // webpack.config.js module.exports {mode: production, // 生产模式自动压缩代码devtool: source-map, // 生成源码映射方便调试optimization: {splitChunks: {chunks: all, // 自动拆分第三方库代码minSize: 20000 /…

ASL集睿致远 CS5265AN typec转hdmi4k60hz方案

CS5265 是ASL集睿致远推出的一款高性能 Type-C/DP1.4 至 HDMI2.0b 转换器 IC,可将 USB Type-C 源或 DP1.4 源连接至 HDMI2.0b 接收器,实现 USB TYPE-C 转 HDMI 数据的音视频转换234。 特点及优势 高集成度:单芯片集成了 DP1.4 兼容接收机、…

QT编程之JSON处理

一、核心类库及功能 Qt 提供了一套完整的 JSON 处理类库(位于 QtCore 模块),支持解析和生成 JSON 数据: ‌QJsonDocument‌:表示完整的 JSON 文档,支持从 QJsonObject 或 QJsonArray 初始化‌。‌QJsonOb…

虚拟展览馆小程序:数字艺术与文化展示的新形式探索

虚拟展览馆小程序:数字艺术与文化展示的新形式探索 一、传统展览的痛点:物理空间的局限与数字化的必然 在传统的艺术与文化展览中,观众往往需要跨越地理距离、排队数小时才能进入展馆,而许多珍贵展品因保护需求无法长期展出。数据显示,全球90%以上的博物馆藏品常年沉睡于…

39. HarmonyOS NEXT Layout布局组件系统详解(六):偏移功能实现

温馨提示:本篇博客的详细代码已发布到 git : https://gitcode.com/nutpi/HarmonyosNext 可以下载运行哦! HarmonyOS NEXT Layout布局组件系统详解(六):偏移功能实现 文章目录 HarmonyOS NEXT Layout布局组件系统详解&a…

【零基础入门unity游戏开发——进阶篇】Unity Microphone类处理麦克风相关信息,录制音频并实时处理或保存录制的音频数据

考虑到每个人基础可能不一样,且并不是所有人都有同时做2D、3D开发的需求,所以我把 【零基础入门unity游戏开发】 分为成了C#篇、unity通用篇、unity3D篇、unity2D篇。 【C#篇】:主要讲解C#的基础语法,包括变量、数据类型、运算符、流程控制、面向对象等,适合没有编程基础的…

部署项目至服务器:响应时间太长,无法访问此页面?

在我们部署项目到服务器上的时候,一顿操作猛如虎,打开页面..... 这里记录一下这种情况是怎么回事。一般就是服务器上的安全组没有放行端口。 因为我是用宝塔进行项目部署的。所以遇到这种情况,要去操作两边(宝塔and服务器所属平台…