一、简介
官网:https://github.com/tfussell/xlnt
Cross-platform user-friendly xlsx library for C++11+
二、基本用法
1. 生成excel
#include <xlnt/xlnt.hpp>
int main()
{
xlnt::workbook wb;
xlnt::worksheet ws = wb.active_sheet();
ws.cell("A1").value(5);
ws.cell("B2").value("string data");
ws.cell("C3").formula("=RAND()");
ws.merge_cells("C3:C4");
ws.freeze_panes("B2");
wb.save("example.xlsx");
return 0;
}
2. 读取指定表单
xlnt::workbook wb;
wb.load("example.xlsx"); // 加载 Excel 文件
// 通过名称获取指定的工作表
xlnt::worksheet ws = wb.sheet("Sheet1");
// xlnt::worksheet ws = wb.sheet(u8"中文");
// 也可以通过索引获取指定的工作表,索引从 0 开始
// xlnt::worksheet ws = wb.sheet(0);
std::cout << "正在读取工作表: " << ws.title() << std::endl;
3. 读取指定单元格
// 读取 A1 单元格的值
auto cell_value = ws.cell("A1").value();
auto cell_value = ws.cell(xlnt::cell_reference(1, 1)).value();
auto cell_value = ws.cell(1, 1).value();
4. 获取行数或列数
// 获取行数
auto row_count = ws.rows();
// 获取列数
auto column_count = ws.columns();
5. 读取指定范围
#include <xlnt/xlnt.hpp>
#include <iostream>
#include <vector>
int main() {
xlnt::workbook wb;
wb.load("example.xlsx"); // 加载 Excel 文件
auto ws = wb.active_sheet();
std::vector<std::string> row_data;
// 读取第1行的数据
for (const auto& cell : ws.range("1:1")) {
row_data.push_back(cell.to_string());
}
// 打印第1行的数据
for (const auto& data : row_data) {
std::cout << data << " ";
}
return 0;
}
三、进阶用法
1. 设置字体
// 创建一个字体对象并设置字体大小和样式
xlnt::font font;
font.size(12); // 设置字体大小为12
font.bold(true); // 设置为粗体
font.italic(true); // 设置为斜体
font.color(xlnt::color::red()); // 设置字体颜色为红色
// 获取要设置字体的单元格
auto cell = ws.cell("A1");
// 将字体对象应用于单元格
cell.font(font);
2. 设置填充色
// 创建一个填充对象并设置颜色
xlnt::fill fill;
fill.pattern_type(xlnt::pattern_fill_type::solid);
fill.foreground(xlnt::color::green());
// 获取要设置背景色的单元格
auto cell = ws.cell("A1");
// 将填充对象应用于单元格
cell.fill(fill);
3. 设置行高与列宽
// 设置行高
ws.row_properties(1).height = 30; // 第1行高度为30像素
// 设置列宽
ws.column_properties(1).width = 20; // 第1列宽度为20