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

安装示例:

bash 复制代码
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

编译方式如下:

bash 复制代码
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

安装步骤:

bash 复制代码
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

安装命令:

bash 复制代码
sudo apt install gnumeric

使用示例:

bash 复制代码
ssconvert data.csv result.xlsx

LibreOffice CLI:soffice 转换命令

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

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

bash 复制代码
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 实现格式转换,快速完成数据的可视化导出。

相关推荐
Gss77739 分钟前
Linux 进程管理与计划任务详解
linux·运维·服务器
one day3211 小时前
Linux和shell
linux·运维·服务器
xnglan2 小时前
数据结构与算法:队列的表示和操作的实现
c语言·数据结构·算法·链表
FirstFrost --sy2 小时前
数据结构之排序
c语言·数据结构·算法·排序算法
鹏大师运维2 小时前
银河麒麟桌面操作系统:自定义截图快捷键操作指南
linux·运维·快捷键·国产操作系统·截图·麒麟kylinos·桌面操作系统
笑稀了的野生俊2 小时前
Ubuntu 下配置 NVIDIA 驱动与 CUDA 环境(适配 RTX 4060Ti)
linux·ubuntu·cuda·nvidia driver
仙云Q122 小时前
NAT技术与代理服务
linux·服务器·网络
rit84324993 小时前
ARM和DSP芯片的双核嵌入式系统的总体设计
arm开发
用户4921013166573 小时前
基于FinalShell输入的虚拟机Linux指令
linux
ajassi20003 小时前
开源 Arkts 鸿蒙应用 开发(十二)传感器的使用
linux·华为·开源·harmonyos