Linux ARM 平台 C 语言操作 Excel 文件的常用库与工具汇总(支持 xls 和 xlsx)

在 Linux 或嵌入式 ARM 平台开发中,使用 C 语言操作 Excel 文件是一项常见需求,特别是在工业设备数据采集、日志导出、报表生成等场景。Excel 文件格式复杂,手工解析成本高,因此使用现成的库可以极大简化开发工作。

本文整理了若干支持 .xls.xlsx 格式的 C/C++ 库及工具,包括:

  • libxls
  • libxlsxwriter
  • xlsxio
  • libxl
  • ezxlsx
  • OpenXLSX
  • libods / ods-c
  • ssconvert(Gnumeric 工具)
  • LibreOffice CLI(soffice)
    均可在 Linux ARM 环境下使用,适用于树莓派、全志、RK3568、STM32MP1 等平台。

libxls:读取 xls 格式的轻量 C 库

libxls 是专为解析 Excel 97-2003(.xls 格式)设计的 C 语言库。它只支持读取功能,不支持写入。该库体积小巧,零外部依赖,适合嵌入式设备。

支持的平台包括 x86、ARM 等多种架构,已经被广泛用于各类轻量项目中。

GitHub 地址:https://github.com/libxls/libxls

安装示例:

git clone https://github.com/libxls/libxls.git
cd libxls
mkdir build && cd build
cmake ..
make && sudo make install

libxlsxwriter:功能完整的 xlsx 写入库

libxlsxwriter 是一款专门用于生成 .xlsx 文件的开源 C 库,支持 Excel 2007 及以上版本格式。该库由 John McNamara 开发,功能包括单元格格式设置、图表绘制、图像插入、合并单元格等。

不支持读取 .xlsx 文件,专注于写入性能和兼容性,代码风格清晰,适合工业项目中用于日志和数据输出。

项目地址:https://github.com/jmcnamara/libxlsxwriter

编译方式如下:

git clone https://github.com/jmcnamara/libxlsxwriter.git
cd libxlsxwriter
make && sudo make install

xlsxio:轻量级的 xlsx 读取与写入库

xlsxio 支持读取和写入 .xlsx 文件,适用于资源受限的嵌入式系统。其最大特点是支持“流式读取”,可以处理超大 Excel 文件而不会消耗大量内存。

库的实现基于 libzip 和 libexpat,依赖相对简单,构建过程清晰,适合直接集成到已有项目中。

GitHub 地址:https://github.com/brechtsanders/xlsxio

安装步骤:

git clone https://github.com/brechtsanders/xlsxio.git
cd xlsxio
mkdir build && cd build
cmake ..
make && sudo make install

libxl:商业授权的高性能 Excel 库

libxl 是一款闭源商业库,提供完整的 .xls.xlsx 文件读写支持,涵盖格式设置、图表、公式、图像等高级功能。该库对性能和兼容性优化良好,支持 C、C++、Delphi 等语言。

libxl 提供 Linux ARM 的 SDK,适用于需要完整 Excel 功能支持的工业系统。虽然需授权,但其功能远超一般开源库。

官方网址:https://www.libxl.com/

ezxlsx:极简实现的 xlsx 写入库

ezxlsx 是一个用 C 编写的极简 .xlsx 文件生成器,适合用于快速写出简单 Excel 文件,结构清晰,便于嵌入式项目进行定制。

它没有额外依赖,生成的文件可以直接被 Excel 打开。适合对性能和控制有极高要求的场景。

GitHub 项目地址:https://github.com/sheredom/ezxlsx

OpenXLSX:现代 C++17 编写的 xlsx 库

OpenXLSX 是一款现代化的 C++17 库,用于处理 .xlsx 文件,支持读取和写入。使用面向对象的接口封装了 Excel 的结构,内部基于 pugiXMLminiz 实现。

该库设计现代、接口清晰,适合新项目使用。但由于使用 C++17,嵌入式项目需确认编译器是否支持相应特性。

GitHub 地址:https://github.com/troldal/OpenXLSX

libods / ods-c:使用 OpenDocument 表格格式的替代方案

libods 是用于创建 .ods(OpenDocument Spreadsheet)文件的 C 语言库,该格式可被 Excel 直接打开,并与 LibreOffice、WPS 等兼容。

虽然不是 Excel 专属格式,但在部分项目中可作为轻量替代方案使用。适用于纯文本数据导出、工业日志归档等用途。

ssconvert:Gnumeric 提供的命令行工具

ssconvert 是 Gnumeric 表格软件的命令行工具,支持 .csv.xls.xlsx 的互相转换。C 程序可通过 system() 调用该命令实现格式转换。

适用于快速构建文本数据到 Excel 的转换流程,前提是运行环境中已安装 gnumeric

安装命令:

sudo apt install gnumeric

使用示例:

ssconvert data.csv result.xlsx

LibreOffice CLI:soffice 转换命令

LibreOffice 提供的 soffice 命令支持将文本、ODS、CSV 等文件批量转换为 .xls.xlsx 格式。该工具适合在 GUI 不可用的嵌入式系统中通过命令行使用。

可通过如下方式执行转换:

soffice --headless --convert-to xlsx filename.csv

LibreOffice CLI 安装包较大,不适合极小型系统,但适用于带存储空间的 ARM Linux 系统(如树莓派)。

结语

在 Linux ARM 嵌入式系统中,处理 Excel 文件时应结合实际需求和系统资源状况选择合适的方案。

当仅需读取旧格式 .xls 文件时,libxls 是轻量且实用的选择。

如需写入格式丰富的 .xlsx 文件,libxlsxwriter 功能完备且成熟稳定。

若需同时读取与写入 .xlsx,并支持流式处理,xlsxio 是理想的开源方案。

对 Excel 功能要求极高(如图表、公式、图像),可使用商业库 libxl,适合工业项目和商业产品。

对于极简场景,ezxlsx 提供极低依赖的 .xlsx 写入能力。OpenXLSX 则适合在现代 C++ 项目中嵌入 Excel 支持功能。

如环境允许,也可以通过 ssconvertsoffice 实现格式转换,快速完成数据的可视化导出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

等离子视界

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值