QT 读写CSV文件

目录

一、CSV的结构

二、源码简析

三、源码


一、CSV的结构

CSV文件,也称为逗号分隔值文件,顾名思义,就是用逗号和换行符分隔开的文件。下面举个例子就很清楚了:

例如我有一个class.csv文件,如果用表格软件打开,即如下:

如果用记事本打开,就是如下:

无论用什么方式打开,其实就是同一个东西。CSV文件通过","分开列,通过换行符(\t\n)分开行,这就是CSV文件的结构。

所以解析的时候,也是根据CSV文件的结构解析:

①根据换行符号将数据分割为行数据集;
②根据逗号“,”将每一行的数据分割为列数据集;
③然后通过循环索引数据。

 

二、源码简析

①读取CSV文件

/*
头文件请自行加
*/

void MainWindow::on_pushButton_read_clicked()
{
    QString fileName = QFileDialog::getOpenFileName(this, tr("Excel file"), qApp->applicationDirPath (),
                                                       tr("Files (*.csv)"));
    QFile file(fileName);
    if(!file.open(QIODevice::ReadOnly | QIODevice::Text))
    {
        qDebug() << "Open Excel file failed!";
        return;
    }
    QStringList list;
    list.clear();
    QTextStream in(&file);
    in.setCodec("GB2312");      //这行的目的是支持读取中文信息
    //遍历行
    for(int i = 0; !in.atEnd(); i++)
    {
        QString fileLine = in.readLine();
        list = fileLine.split(",", QString::SkipEmptyParts);    //根据","开分隔开每行的列
        if(i > 0)   //这里的目的是第一行的表项不赋值,如果需要表项内容可以去掉if
        {
            //遍历列,我的Domo只有4列
            for(int j = 0; j <= 4; j++)
            {
                //list.at(j)就是每列的值
            }
            qDebug() << list;
        }
    }

    file.close();
}

调试输出:

②写文件

/*
头文件请自行加
*/

void MainWindow::on_pushButton_write_clicked()
{
    QString fileName = QFileDialog::getOpenFileName(this, tr("Excel file"), qApp->applicationDirPath (),
                                                       tr("Files (*.csv)"));
    QFile file(fileName);
    QStringList lines;
    lines << "class,name,age,score,teacher\n" << "3,XiaoDong,12,97,Joy\n" << "4,XiaoYao,12,99,Martin\n";
    //以只写方式打开,完全重写数据
    if (file.open(QIODevice::WriteOnly))
    {
        for (int i = 0; i < lines.size(); i++)
        {
            file.write(lines[i].toStdString().c_str());/*写入每一行数据到文件*/
        }

        file.close();
    }
}

写入文件结果:

 

三、源码

链接:https://pan.baidu.com/s/1ZyXN4xZYKfw2UlBqyfUx1w 
提取码:7vwf 

  • 10
    点赞
  • 92
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值