在现代 C++ 项目中,如果你需要读取或写入 Excel .xlsx 文件,OpenXLSX 是一个非常轻量级且纯 C++ 实现的开源库。本文将介绍如何将 OpenXLSX 库集成到你的 C++ 项目中,并提供示例代码帮助你快速上手。

一、OpenXLSX 简介

OpenXLSX 是一个用标准 C++17 编写的库,用于读取和写入 .xlsx 文件。它不依赖任何平台特定组件,非常适合嵌入式系统、桌面程序甚至 CLI 工具中。

优点包括:

  • 仅支持 .xlsx(基于 XML 的现代 Excel 格式)
  • 纯 C++17 实现,跨平台
  • 支持读取/写入工作表、单元格、行列等操作

二、安装 OpenXLSX

方式一:使用 vcpkg 安装(推荐)

如果你使用 vcpkg 作为包管理器,可以直接执行:

1
vcpkg install openxlsx

并在你的 CMakeLists.txt 中添加:

1
2
find_package(OpenXLSX CONFIG REQUIRED)
target_link_libraries(your_target PRIVATE OpenXLSX::OpenXLSX)

注意:你需要用 vcpkg 启动 CMake,或设置 CMAKE_TOOLCHAIN_FILE


方式二:手动克隆源码

  1. 克隆仓库:
1
git clone https://github.com/troldal/OpenXLSX.git
  1. 拷贝 OpenXLSX/src 到你的项目中,或作为子模块添加。
  2. 将以下目录加入你的 include path:
1
-I/path/to/OpenXLSX/src

三、项目中使用 OpenXLSX

示例:读取 Excel 文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <OpenXLSX.hpp>
#include <iostream>

int main() {
try {
OpenXLSX::XLDocument doc;
doc.open("example.xlsx");

auto wks = doc.workbook().worksheet("Sheet1");
auto cell = wks.cell("A1").value();
std::cout << "A1 的值是:" << cell.get<std::string>() << std::endl;

doc.close();
} catch (const std::exception& e) {
std::cerr << "读取失败:" << e.what() << std::endl;
}
}

四、常见错误与解决方法

1. #include <OpenXLSX.hpp> 出现红色波浪线

这是因为编译器找不到该头文件。请检查:

  • 是否正确安装 OpenXLSX?
  • 是否将 include 路径添加到编译器参数中(如 -I)?
  • 是否配置好 includePath(VSCode 用户)?

2. CMake 无法找到 OpenXLSX

请确保你使用的是 vcpkg 安装,并指定了 CMAKE_TOOLCHAIN_FILE,或手动指定库路径。


五、参考链接


通过本文你应该可以顺利将 OpenXLSX 集成到你的 C++ 项目中,并读取 .xlsx 文件了。如有疑问,欢迎留言交流!