c++ - "Large"使用C++ Qt和Qt Xlsx模块读取xlsx文件

标签 c++ excel qt xlsx

我正在使用 Qt 框架在 C++ 中开发应用程序,但我需要读取 .xslx 文件以将其导入 sqlite 数据库。我正在使用 Qt Xlsx 模块,但我发现了一些困难,因为我的程序在执行期间的某个随机点崩溃了。该文件大约有 1500 行和 10 列。我能够读取 700 到 1000 行,但随后它崩溃了。我认为这是一个内存问题,但我无法使用 Valgrind,因为我在 Mac OS X 系统上。 我的代码的相关部分如下。

void Controller::ImportDatabase(const QString &filepath)
{
    QStringList* person_fields = new QStringList;

    QXlsx::Document *xlsx_database = new QXlsx::Document(filepath);

    int number_of_row = xlsx_database->dimension().lastRow();
    int number_of_column = xlsx_database->dimension().lastColumn();


    for (int row = 2; row <= number_of_row; ++row) {
        ++count;
        qDebug() << "count: " << count;
        for(int column = 0; column < number_of_column ; ++column) {
            if ((QXlsx::Cell *cell = xlsx_database->cellAt(row, column))) {
                person_fields->append(cell->value().toString());
                delete cell;
            }
        }
        qDebug() << "NOME: " << person_fields->at(0);

        //Create a new Person and pass its pointer around: all commented anyway

        person_fields->clear();
        delete cell;
    }
    delete person_fields;
    delete xlsx_database;
}

如有任何建议或想法,我们将不胜感激。

最佳答案

你绝对不能删除cell,因为它属于QXlsx::Document。

关于c++ - "Large"使用C++ Qt和Qt Xlsx模块读取xlsx文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34514149/

相关文章:

c++ - 使用 Qpr​​ocess 运行 ping,如果主机是否可达,退出代码始终为 2

c++ - QT QGraphicsScene 自动调整到原始图像大小

c++ - 将鼠标悬停在 QListWidget 项上时如何绘制轮廓?

c++ - 使用 Qt 编译 OpenCV

c++ - VS2010 中的 Magick++ - 未解析的外部符号

c# - 如何在 WPF 中调试绑定(bind)

excel - 检查当前单元格的值是否与前一个单元格的值匹配

C# 或 C/C++ 如何从客户端接收数据包,过滤并将它们重定向到服务器,从服务器接收并发送给客户端

python - 从 C++ 到 Python 的 OpenCV absdiff 等价物

excel - 如何使用 Excel 以 UTF-8 编码打开文本文件?