• 9026阅读
  • 10回复

[提问]csv文件导入 [复制链接]

上一主题 下一主题
离线zjfshowtime
 
只看楼主 倒序阅读 楼主  发表于: 2011-06-29
qt 中怎么导入 .csv 文件,并将其解析!很急,请大侠指教啊!
离线begboy

只看该作者 1楼 发表于: 2011-06-29
CSV实际是文本格式文件,一般用“,”作分隔符。
可以每行读入后分割处理。
离线zjfshowtime
只看该作者 2楼 发表于: 2011-06-29
用QByteArray么?我这么写的
QFile file(filename);
    if (!file.open(QIODevice::ReadOnly | QIODevice::Unbuffered)){
        return;
    }
    QByteArray b = file.readAll();
    file.close();
   b 的值好像不是csv文件中的值啊!
离线zjfshowtime
只看该作者 3楼 发表于: 2011-06-29
回 1楼(begboy) 的帖子
b 的值,好像不是文本的值
离线begboy

只看该作者 4楼 发表于: 2011-06-29
可在WIN下随便打开一个Excel文件(有内容),选择另存为.csv文件,然后用UE或记事本打开查看试试。
FOR LUCK!
离线zjfshowtime
只看该作者 5楼 发表于: 2011-06-29
回 4楼(begboy) 的帖子
看懂了,都是用逗号分隔,和\n来换行的啊,但是具体哪一位是什么数据怎么确定
离线begboy

只看该作者 6楼 发表于: 2011-06-30
Re:回 4楼(begboy) 的帖子
引用第5楼zjfshowtime于2011-06-29 20:03发表的 回 4楼(begboy) 的帖子 :
看懂了,都是用逗号分隔,和\n来换行的啊,但是具体哪一位是什么数据怎么确定

"具体哪一位是什么数据"
是指什么意思?
在UNIX(LINUX)下生成.csv文件主要是为了WIN下用Excel直接可以打开。
不知你要处理.csv文件用作什么?

离线zjfshowtime
只看该作者 7楼 发表于: 2011-07-02
回 6楼(begboy) 的帖子
我csv的表格数据 52  100  100
                                12   56   23
这样的话,我是怎么读取它们!谢谢了!
离线zjfshowtime
只看该作者 8楼 发表于: 2011-07-02
好了,我已经解决了!
离线zjfshowtime
只看该作者 9楼 发表于: 2011-09-07
献上代码
QStringList CSV::inportCSV(QWidget *widget)
{
    QString fileName = QFileDialog::getOpenFileName(widget, tr("Inport data"), "./",
                                                    tr("CSV file(*.csv)"));
    QStringList csvList;
    if(fileName == "")
    {
        return csvList;
    }
    QFile file(fileName);

    csvList.clear();
    if(file.open(QIODevice::ReadWrite))
    {
        QTextStream stream(&file);
        while(!stream.atEnd())
        {
            csvList.push_back(stream.readLine());
        }
        file.close();
    }
    return csvList;
}
这相当于是一个二维的QStringList,需要解析,解析如下
QStringList list ;
    list.clear();
    csv = new CSV(this);
    list = csv->inportCSV(this);
    if(list.size() == 0)
    {
        return;
    }
    for(int i = 1 ; i < 11; i++)
    {
        QStringList rowlist = list.at(i).split(",");
        for(int j = 1; j < 5 ; j++ )
        {
            qDebug("%d", rowlist.at(j).toInt());
        }
    }
离线luxiaolai

只看该作者 10楼 发表于: 2011-09-27
好东西呀,谢了
快速回复
限100 字节
 
上一个 下一个