正在使用xlsx文件中的Xlnt库检测最后一列和最后一行

Detecting last column and last row with Xlnt library in a xlsx file

本文关键字:最后 一列 一行 检测 xlsx 文件 Xlnt      更新时间:2024-09-30

我正在尝试使用Xlnt库来创建和操作一些xlsx文件
这个库中是否有函数可以让您知道它是最后一列非空和最后一行非空
下面是一个代码示例:

#include <xlnt/xlnt.hpp>
#include <string>
#include <iostream>
int main ()
{
xlnt::workbook wb;
xlnt::worksheet ws = wb.active_sheet();
ws.cell("AB1").value(5);
ws.cell("B12").value(10);
ws.cell("C3").formula("=AB1+B12");
wb.save("example.xlsx");
std::string lastColumn = ws.last_column();     // exists similar function?
size_t lastRow = ws.last_row();                // exists similar function?
std::cout << lastColumn << ' ' << lastRow << std::endl;
return 0;
}

阅读代码可以清楚地看到,最后一列是";AB";最后一行是12,但显然程序不知道哪些单元格具有任何类型的内容。

从文档中,有一个end迭代器返回最后一行之后的迭代器。

https://github.com/tfussell/xlnt/blob/master/include/xlnt/worksheet/worksheet.hpp#L630

所以像这样的东西可能会起作用:

xlnt::worksheet ws = wb.active_sheet();
const auto last_row = *std::prev(ws.end());

如果工作表中没有行,这可能是未定义的行为,因此请相应地添加错误检查。