2017-03-04 55 views
1

我正在创建一个名为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); 
} 
+0

的可能重复:https://stackoverflow.com/questions/27318631/parsing-through-a-csv-file-in-qt – besc

回答

0

CSV文件有点难以阅读。

您的特定文件可能有简单的记录,但Excel将创建带有转义,缺失值等的CSV。

如果你拿我的CSV解析器,你可以查询它的CSV文件结构(哪些列在哪里,它们是什么类型)和值。解析器不会做任何非常复杂的事情,但它处理分配内存和分割字段并将它们分配给列的混乱情况。

如果您正在填充一个简单的C结构,那么您将丢弃任何不匹配的CSV对象。如果一个对象匹配,那么通过调用getfield就是一个简单的循环。然后您销毁CSV对象。

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

相关问题