在C++中处理Excel:用于读写操作的库和工具

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

在C++中处理Excel:库和工具



处理Excel表格(.xlsx格式)是应用编程中的常见任务之一。C++本身不原生支持此格式,但有多个高质量的库允许您读取、创建和编辑Excel文件。在本文中,我们将介绍四种主要方法:libxlsxwriter、xlsxio、OpenXLSX以及通过Windows上的COM接口进行操作。



1. libxlsxwriter — 即时创建XLSX文件



libxlsxwriter是一个C语言库,带有C++封装。它允许创建功能完整的XLSX文件,支持格式化、公式、图表和单元格合并。主要优势在于速度快且内存占用极低。



安装

从GitHub下载源代码,并通过CMake编译:

git clone https://github.com/jmcnamara/libxlsxwriter.gitcd libxlsxwritermkdir build && cd buildcmake .. -DCMAKE_BUILD_TYPE=Releasemakesudo make install


示例:创建带公式的表格

#include <xlsxwriter.h>

int main() { lxw_workbook *workbook = workbook_new("report.xlsx"); lxw_worksheet *worksheet = workbook_add_worksheet(workbook, "销售");

// 表头 worksheet_write_string(worksheet, 0, 0, "商品", NULL); worksheet_write_string(worksheet, 0, 1, "数量", NULL); worksheet_write_string(worksheet, 0, 2, "单价", NULL); worksheet_write_string(worksheet, 0, 3, "总计", NULL);

// 数据 worksheet_write_string(worksheet, 1, 0, "苹果", NULL); worksheet_write_number(worksheet, 1, 1, 100, NULL); worksheet_write_number(worksheet, 1, 2, 2.5, NULL);

// 公式 worksheet_write_formula(worksheet, 1, 3, "=B2*C2", NULL);

workbook_close(workbook); return 0;}


编译时使用:

g++ -o create_excel create_excel.cpp -lxlsxwriter


2. xlsxio — 读取和简单写入



xlsxio是一个轻量级的C语言库,专注于读取XLSX文件。它支持流式解析,从而可以处理大文件而无需加载到内存中。



安装

git clone https://github.com/brechtsanders/xlsxio.gitcd xlsxiomkdir build && cd buildcmake ..makesudo make install


示例:从Excel读取数据

#include <xlsxio_read.h>

int main() { xlsxioreader xlsxioread = xlsxioread_open("data.xlsx"); if (!xlsxioread) return 1;

xlsxioreadersheet sheet = xlsxioread_sheet_open(xlsxioread, NULL, 0); if (sheet) { while (xlsxioread_sheet_next_row(sheet)) { const char* value; while ((value = xlsxioread_sheet_next_cell(sheet)) != NULL) { printf("%s\\t", value); } printf(""); } xlsxioread_sheet_close(sheet); } xlsxioread_close(xlsxioread); return 0;}


3. OpenXLSX — 现代C++接口



OpenXLSX是一个基于C++17的库,提供了面向对象的API来处理XLSX文件。支持读取、写入、样式以及多工作表操作。



安装

git clone https://github.com/troldal/OpenXLSX.gitcd OpenXLSXmkdir build && cd buildcmake .. -DOPENXLSX_BUILD_TESTS=OFFmakesudo make install


示例:带格式的写入

#include <OpenXLSX/OpenXLSX.hpp>

int main() { using namespace OpenXLSX;

XLDocument doc; doc.create("formatted.xlsx"); auto wks = doc.workbook().worksheet("Sheet1");

// 带格式写入 XLCellValue v

推荐