当前位置: 首页 > news >正文

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

http://www.dtcms.com/a/305501.html

相关文章:

  • 【 建模分析回顾】[MultiOutputClassifier]MAP - Charting Student Math Misunderstandings
  • 【硬件-笔试面试题】硬件/电子工程师,笔试面试题-51,(知识点:stm32,GPIO基础知识)
  • Java stream 并发问题
  • 2025年6月电子学会青少年软件编程(C语言)等级考试试卷(二级)
  • 潇洒郎: Kafka Ubuntu 安装部署,命令行或者python生产数据与消费数据(kafka-python)
  • makefile中include *.d文件的作用
  • 安全和AI方向的学习路线
  • aws(学习笔记第五十课) ECS集中练习(2)
  • 项目目标如何拆解,才能提高执行效率和效果
  • 获取TensorRT引擎文件(.engine)版本号的几种方法
  • GitPython02-Git使用方式
  • 【Datawhale AI夏令营】科大讯飞AI大赛(大模型技术)/夏令营:让AI理解列车排期表(Task3)
  • Elasticsearch 全文检索与过滤
  • MyBatis Plus Wrapper 详细分析与原理
  • 设计模式十四:适配器模式(Adapter Pattern)
  • MCP提示词工程:上下文注入的艺术与科学
  • 【计算机视觉与代码大模型全景解析:从理论基础到学习路线】
  • VSCode高效集成开发全流程优化
  • [论文阅读] 人工智能 + 软件工程 | 增强RESTful API测试:针对MongoDB的搜索式模糊测试新方法
  • Jaeger理论、实战、问题记录
  • Python 中使用 OpenCV 库来捕获摄像头视频流并在窗口中显示
  • RAG实战指南 Day 28:RAG系统缓存与性能优化
  • Web3:赛道划分与发展趋势解析
  • JDBC编程笔记
  • 创建型设计模式-Builder
  • Git链接备用手册
  • 【NLP舆情分析】基于python微博舆情分析可视化系统(flask+pandas+echarts) 视频教程 - 微博内容IP地图可视化分析实现
  • 《设计模式之禅》笔记摘录 - 11.策略模式
  • 15 - 多模态大语言模型 — 图文 “牵线” 系统 “成长记”:借 CLIP 练本领,从图像与文字里精准 “搭鹊桥” 的全过程 (呆瓜版 - 2 号)
  • Java源码构建智能名片小程序