QT解析CSV文件的内容并将其存储到结构数组中
问题描述:
我正在创建一个名为getExcelFile()的函数来获取excel文件的内容并将其存储到结构数组中。首先我想读一行csv文件并使用分隔符,。然后,我想将内容添加到QStringList,并使用for循环遍历一个结构数组,并将内容添加到其中。一切工作正常,除了它说datalist.append((line.split(',')));帮助将不胜感激!QT解析CSV文件的内容并将其存储到结构数组中
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);
}
答
CSV文件有点难以阅读。
您的特定文件可能有简单的记录,但Excel将创建带有转义,缺失值等的CSV。
如果你拿我的CSV解析器,你可以查询它的CSV文件结构(哪些列在哪里,它们是什么类型)和值。解析器不会做任何非常复杂的事情,但它处理分配内存和分割字段并将它们分配给列的混乱情况。
如果您正在填充一个简单的C结构,那么您将丢弃任何不匹配的CSV对象。如果一个对象匹配,那么通过调用getfield就是一个简单的循环。然后您销毁CSV对象。
的可能重复:https://stackoverflow.com/questions/27318631/parsing-through-a-csv-file-in-qt – besc