QT解析CSV文件的内容并存储到结构数组中

时间:2017-03-04 19:35:29

标签: c++

我正在创建一个名为getExcelFile()的函数来获取excel文件的内容并将其存储到结构数组中。首先,我想读取csv文件的一行并使用分隔符。然后我想将内容添加到QStringList并使用for循环迭代结构数组并将内容添加到其中。一切都工作得很好,除了它说的datalist.append((line.split(',')));非常感谢帮助!

void Widget::getExcelFile(){
    //Name of the Qfile object.
    //filename is the directory of the file once it has been selected in prompt
    QFile thefile(filename);
    //QStringList named datalist.
    QStringList datalist;
    //If the file is successfully open
    if (thefile.open(QIODevice::ReadOnly | QIODevice::Text)){
        qDebug() << "File opened successfully";
        while (!thefile.atEnd()){
                    QByteArray line = thefile.readLine();
                    datalist.append((line.split(',')));


                }

    }

    qDebug() << datalist;
    ui->textEdit->setPlainText(fileContent);
}

1 个答案:

答案 0 :(得分:0)

CSV文件比阅读起来有点棘手。

您的特定文件可能包含简单记录,但Excel会创建具有转义的CSV,缺少值等等。

如果您使用我的CSV解析器,则可以查询它的CSV文件结构(哪些列在那里以及它们的类型)和值。解析器没有做任何非常复杂的事情,但它处理分配内存和打破字段并将它们分配给列的混乱。

如果要填写简单的C结构,则抛弃任何不匹配的CSV对象。如果一个对象匹配,那么调用getfield就是一个简单的循环。然后,您销毁CSV对象。

http://www.malcolmmclean.site11.com/www/CSVtoC/csvtoc.html