qt读写CSV文件

本文介绍了如何使用QT库进行CSV文件的读写操作。通过示例代码展示了如何打开并写入数据到CSV文件,以及如何读取CSV文件内容。QT的QTextStream类使得处理CSV文件变得简单,无论是创建表头还是写入数据,以及读取每一行的数据,都能高效完成。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近的要用到CSV格式的数据,所以这篇文章讲述一下QT读取CSV文件数据 。

xls文件是Excel电子表格的文件格式,而csv是一种比较通用的文件格式,xls文件只能用Excel才能打开,而csv文件可以用Excel、记事本、文本编辑器打开。

记住:CSV文件数据项使用“,”来分割的。

代码如下:

写入数据

  //打开.csv文件
       QFile file("200000.csv");
       if(!file.open(QIODevice::WriteOnly | QIODevice::Text))
       {
           qDebug()<<"Cannot open file for writing";
           return;
       }
       QTextStream out(&file);

       //创建表头
       out << tr("信息,") << tr("数字,") <<"\n";

       //写入内容
       for(int i = 0; i < 10; i++)
       {
           out << "test" << "," << i << "\n";

       }
       //关闭文件
       file.close();

读取数据

    QFile file("20000.csv");

    /*如果以ReadWrite方式打开,不会把所有数据清除,若文件原来的长度为100字节,写操作写入了30字节,那还剩余70字节,并且这70字节和文件打开之前保持一致*/
    if(!file.open(QIODevice::ReadOnly))
    {
        qDebug()<<"请正确选择csv文件";
        return;
    }

    QTextStream * read = new QTextStream(&file);
    QStringList Data = read->readAll().split("\n",QString::SkipEmptyParts);   //每行以\n区分

    for(int i=0;i<Data.count();++i)
    {
        QStringList strLine = Data.at(i).split(",");     //一行中的单元格以,区分
        qDebug()<<strLine.at(0);                        //打印出每行的第一个单元格的数据
    }

    //关闭文件
    file.close();

### 使用 Qt 读取 CSV 文件 为了实现使用 Qt 读取 CSV 文件的功能,可以利用 `QFile` 和 `QTextStream` 类来处理文件输入操作。此外,对于解析 CSV 数据中的每一行并将其分割成单独的字段,可借助于 C++ 的标准库函数如 `QString::split()` 函数[^2]。 下面是一个简单的例子展示如何用 Qt 来加载和打印 CSV 文件的内容: ```cpp #include <QCoreApplication> #include <QFile> #include <QTextStream> #include <QDebug> int main(int argc, char *argv[]) { QCoreApplication app(argc, argv); QString fileName = "example.csv"; QFile file(fileName); if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) { qDebug() << "Cannot open file:" << qPrintable(file.errorString()); return -1; } QTextStream in(&file); while (!in.atEnd()) { QString line = in.readLine(); QStringList fields = line.split(',', QString::SkipEmptyParts); // Split by comma foreach(QString field, fields){ qDebug() << field.trimmed(); // Print each field after trimming whitespace } qDebug() << "--- End of Line ---"; // Separator between lines } file.close(); return app.exec(); } ``` 此程序会打开名为 `example.csv` 的文件,并逐行读入数据。每遇到一行就调用一次 `split()` 方法按照逗号分隔符拆分字符串得到各个列的数据项,最后通过循环遍历这些项目并去除首尾空白字符后输出到控制台。 #### 处理更复杂的 CSV 文件结构 如果面对的是更为复杂的情况——比如存在带引号的文字串内含逗号或其他特殊符号,则可能需要考虑采用第三方库或是编写更加精细的状态机逻辑来进行正确的解析工作。不过上述基础方法已经能够满足大多数简单场景下的需求了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值