"大"使用C ++ Qt和Qt Xlsx模块读取xlsx文件

时间:2015-12-29 15:33:42

标签: c++ excel qt xlsx

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

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;
}

非常感谢任何建议或想法。

1 个答案:

答案 0 :(得分:1)

你必须删除cell,因为它归QXlsx :: Document所有。