Qt CSV文件的创建,读写操作

2023-11-16

一.CSV文件介绍

逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。纯文本意味着该文件是一个字符序列,不含必须像二进制数字那样被解读的数据。CSV文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符。通常,所有记录都有完全相同的字段序列。通常都是纯文本文件。
在这里插入图片描述

二.创建CSV文件

根据输入文件名和当前的时间创建CSV文件。例如,输入的fileName为"1",当前的时间为2022/12/28 15:37:21,则创建的CSV文件名为1_20221228_153721.csv

void creatCSVFile(QString fileName)
{
    QDateTime timeCurrent = QDateTime::currentDateTime(); //获取系统时间
    QString time_day = timeCurrent.toString("20yyMMdd"); //年月日转换为Qstring
    QString time_hour = timeCurrent.toString("hhmmss"); //时分秒转换为Qstring
    QString path_csv = QString("%1_%2_%3.csv").arg(fileName).arg(time_day).arg(time_hour); //设置csv文件的名称
    QDir dir(path_csv); //文件路径
    if(!dir.exists()) //判断文件是否存在,不存在则创建
    {
        qDebug() << "no such dir";
        if(dir.mkpath(dir.absolutePath()))
        {
           qDebug() << "creat dir success:" << dir.absolutePath();
        }
        else
        {
            qDebug() << "creat dir failed" << dir.absolutePath();
        }
    }
}

三.写入CSV文件

根据文件路径和数据进行CSV文件的数据写入,写入时可以设置文件的打开方式,如下:

内容 说明
QIODevice::NotOpen 0x0000 设备未打开。
QIODevice::ReadOnly 0x0001 设备已打开读取。
QIODevice::WriteOnly 0x0002 设备已打开以进行写入。注意,对于文件系统子类(例如QFile),除非与ReadOnly、Append或NewOnly结合使用,否则此模式意味着截断。
QIODevice::ReadWrite ReadOnly | WriteOnly 该设备可进行读取和写入。
QIODevice::Append 0x0004 该设备以追加模式打开,以便将所有数据写入文件末尾。
QIODevice::Truncate 0x0008 如果可能,设备在打开之前会被截断。设备的所有早期内容都将丢失。
QIODevice::Text 0x0010 读取时,行尾终止符转换为“\n”。写入时,行结尾终止符被转换为本地编码,例如,对于Win32,“\r\n”。
QIODevice::Unbuffered 0x0020 绕过设备中的任何缓冲区。
QIODevice::NewOnly 0x0040 如果要打开的文件已存在,则失败。仅当文件不存在时创建并打开该文件。
QIODevice::ExistingOnly 0x0080 如果要打开的文件不存在,则失败。此标志必须与ReadOnly、WriteOnly或ReadWrite一起指定。
void writeCSVFile(QString fileName, QString data)
{
    QFile file;
    file.setFileName(path_csv);
    if(!file.open(QIODevice::Append))
    {
        //ReadOnly文件不存在,打开失败
        //WriteOnly文件不存在,会自动创建文件
        //ReadWrite文件不存在,会自动创建文件
        //Append文件不存在,会自动创建文件
        //Truncate文件不存在,打开失败
        //Text文件不存在,打开失败
        //Unbuffered文件不存在,打开失败
        qDebug()<<"文件打开失败";
    }
    file.write(data.toStdString().c_str());
    file.close();
}

四.读取CSV文件

根据文件路径进行CSV文件的读取,同样的,读取时也可以设置读取方式,如下:

void readCSVFile(QString csvFilePath)
{
    QFile csvFile(csvFilePath);
    //判断文件是否存在
    if (csvFile.exists())
    {
        if(csvFile.open(QIODevice::ReadOnly))
        {
            //读取csv文件内容
            QTextStream out(&csvFile);
			
			//将csv文件的内容以换行符进行分割成字符串列表
            QStringList tempOption = out.readAll().split("\n");

			//遍历每行的内容
            for (int i = 0; i < tempOption.count(); i++)
            {
            	//每行的内容以","进行分割,生成字符串列表
                QStringList tempbar = tempOption.at(i).split(",");
            }
        }
    }
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Qt CSV文件的创建,读写操作 的相关文章

  • 禁用 QML Slider 的鼠标滚轮

    我希望能够滚动Flickable使用鼠标滚轮 或触摸板上的两根手指 不改变Sliders它可能包含 示例代码及结果应用 import QtQuick 2 7 import QtQuick Window 2 2 import QtQuick
  • QGraphicsScene::clear 不会改变 sceneRect

    我有一个 QGraphicsScene 场景 和 QGraphicsView graphicsView 我有一个画图的方法 当我需要重绘所有图形时 我调用这个方法 一切都好 但我意识到 scene gt clear 不会改变 sceneRe
  • 向 Qt 样式表添加特异性时丢失样式

    这是我的代码 const QString STYLE SHEET background color rgba x x x y border 1px solid gray border radius 0px border top 1px so
  • 重定向 python 交互式帮助()

    我正在为使用 Qt 的应用程序开发交互式 python shell 但是我似乎无法获得重定向的交互式帮助 我的 python 代码中有这个 class OutputCatcher def init self self data def wr
  • QToolButton:更改菜单位置

    使用菜单时QToolButton菜单显示在按钮的正下方 有没有办法在按钮的左侧 右侧显示菜单 我知道这个问题不久前已得到回答 但我想为此问题添加新答案 因为接受的答案不再有效 实际上 更改 QToolButton 上的菜单位置非常容易 您需
  • 如何获取 QTableView 的标题列表?

    我有一个QTableView我的对话框中的对象 我需要访问该表的水平标题并将它们放入QStringList object 尽管进行了大量搜索 但我在 Qt 文档中找不到如何获取此标头列表 编辑 我发现的最接近的地方是this https w
  • 使用 QtWebEngine 将 C++ 对象暴露给 Qt 中的 Javascript

    使用 QtWebkit 可以通过以下方式将 C 对象公开给 JavascriptQWebFrame addToJavaScriptWindowObject如中所述https stackoverflow com a 20685002 5959
  • Qt 插槽是否与其他代码并行运行?

    在此函数示例中 void MyClass myFunction emit MySignal1 emit MySignal2 如果我有slot1倾听MySignal1 and slot2倾听MySignal2 1 Is slot1总是会在之前
  • 将 gnuplot 嵌入现有 QtWidget 中

    我正在用 C 创建一个 伪 实时绘图应用程序 使用 gnuplot 作为绘图后端 我的要求之一是绘图必须位于现有窗口内 而不是有一个单独的绘图窗口 gnuplot 默认为 Gnuplot 有一个选项可以指定 Qt 小部件 ID 这似乎适合我
  • Qt - 无法让 lambda 工作[重复]

    这个问题在这里已经有答案了 我有以下功能 我想在其中修剪我的std set
  • Qt表格小部件,删除行的按钮

    我有一个 QTableWidget 对于所有行 我将一列的 setCellWidget 设置为按钮 我想将此按钮连接到删除该行的函数 我尝试了这段代码 它不起作用 因为如果我只是单击按钮 我不会将当前行设置为按钮的行 ui gt table
  • 如何向同一个 QMenu 添加多个 QAction?

    我正在尝试实现 Qt 菜单自定义 并且我提供了一个功能来添加相同的功能QAction在同一个人民币上下文菜单中多次 但是当我尝试这样做时 myMenu gt addAction myAction myMenu gt addAction my
  • 安装J语言的JQt IDE,出现错误

    我一直按照这里的说明进行操作 http code jsoftware com wiki System Installation Linux http code jsoftware com wiki System Installation L
  • 为什么 QGraphicsWidget 的选择边框在 QGraphicsScene 中不可见?

    我已经通过一个小部件添加到图形场景 QGraphicSscene QGraphicsProxyWidget 问题是 当我选择该项目时 它被选中 但选择边框不可见 这是代码 QDial dial new QDial Widget dial g
  • 如何在qt中创建正确的退出按钮

    我正在尝试创建一个退出按钮来正确关闭我在 QT 中制作的 GUI 我尝试通过以下方式执行此操作 include
  • Qt Creator 2.8.1 Qt 5.1.1 Qt Designer Linux 显示新窗体

    我是 Qt 的初学者 所以希望这是一个容易回答的问题 我有相当多的 C 经验 这部分不是问题 我的应用程序的目的是进行代码生成 最初是为类制作头文件和实现文件 我非常喜欢 Code Blocks 上的类向导 但我认为我可以做更多的事情 我有
  • 将 UTC 格式的 QDateTime 转换为本地系统时间

    我从这样的字符串构造 QDateTime QDateTime date QDateTime fromString 2010 10 25T10 28 58 570Z yyyy MM ddTHH mm ss zzzZ 我知道date是 UTC
  • 常量类成员、赋值运算符和 QList

    请确认我是否正确并告诉我是否有更好的解决方案 我了解具有常量成员的对象 例如int const width 无法由编译器隐式创建的合成赋值运算符处理 但是 QList 我想 std list 也是如此 需要一个有效的赋值运算符 因此 当我想
  • Qt:删除富文本

    对于明文有QFontMetrics elideText https doc qt io qt 5 qfontmetrics html elidedText https doc qt io qt 5 qfontmetrics html eli
  • QFileInfo::isWritable() 在 Windows 7 上具有完全权限时返回 false

    QFile file filePath QFileInfo fileInfo file file open QIODevice ReadWrite or WriteOnly if fileInfo isWritable Log error

随机推荐

  • 苹果为什么玩游戏会找不到服务器,Game Center无法连接服务器怎么办 五种方法任你选择...

    苹果用户在玩单机游戏的时候 GameCenter会进行登录然后查看游戏排名 但是有部分用户反映无法连接服务器 这个要怎么解决呢 下面小编就告诉你处理方法 类别 摄影图像 大小 120 43M 语言 简体中文 评分 10 方法一 首先我们来查
  • 如何在VMware Workstation虚拟机上快速部署AntDB社区版

    AntDB社区版采用了一键部署架构 步骤简单 耗时短 部署快 为大家的快速体验提供了极大便利 这里将通过环境准备 下载AntDB社区版 部署AntDB社区版三个部分跟大家一起体验如何快速完成AntDB社区版在VMware Workstati
  • EXCEL词典(xllex.dll)文件丢失或损坏的解决方法

    今天打开Excel 2016 突然一个不想看到的报错弹窗出现在了屏幕上 带着郁闷和好奇的眼光瞧了一眼 好家伙 这玩意儿还是第一次遇到 这可咋办 管它三七二十几 先 确定 了再说 下面这个就是那个 好家伙 于是我做了系统修复 并没有找到什么实
  • 云计算1+X之openstack篇

    openstack之Keystone 服务运维 概述 OpenStack 框架中 Keystone OpenStack Identity Service 的功能是负责验证身份 校验服务规则和发布服务令牌的 它实现了 OpenStack 的
  • 深度学习(入门)——逻辑回归模型(Logistics Regression)

    从逻辑回归开始 是因为这是一个简单的 可以理解成为一个简单的一层的神经网络 后续将逐步深入 了解更复杂的神经网络 一 假设函数 逻辑回归算法适用于二分类问题 例如在输入一个猫的图片到模型中 模型会输出1 这是一只猫 或者0 不是一只猫 对于
  • 在RHEL6配置IPv6 DNS Server

    Youtube上有一个视频是关于IPv4 DNS Server配置的 链接为https www youtube com watch v ZQkMYWTx28o 我在这里照猫画虎 配置一下IPv6的 以本人的机器为例 网卡为eth3 IPv6
  • sql重难点

    SQL总结 语法部分 1 exists和in的区别 where exists select x from employees e where e department id d department id where department
  • 小议CSDN周赛57期 - 凑数

    本期周赛几乎忘记参加 在最后几分钟的时候上来看了看 那些选择判断一通乱选 填空题也已经被吐槽得差不多了 这里不多说 只说我对第一道编程题的看法 吐槽 因为 C 站的机制是 即使它错了 它也不会承认 印象里只承认且改过一次 再争辩只会把你拉黑
  • HTML样式

    目录 HTML 的 style 属性 不赞成使用的标签和属性 应该避免使用下面这些标签和属性 HTML 样式实例 背景颜色 HTML 样式实例 字体 颜色和尺寸 HTML 样式实例 文本对齐 一个完整的实例 style 属性用于改变 HTM
  • 安卓手机玩游戏卡顿怎么解决_手机玩游戏的时候卡顿,怎么处理?

    手机内存不足或者是后台开了太多的应用程序 请关闭不需要的应用程序 并且定时清理手机缓存垃圾 释放内存 一 iPhone6玩游戏卡顿怎么办 1 关闭Assistive Touch 对于很多果粉来说 为了避免对Home键造成伤害 Assisti
  • 心电图心跳分类

    目录 背景介绍 数据探索性分析 特征工程 时间序列特征 背景介绍 赛题以医疗数据挖掘为背景 要求选手使用提供的心跳信号传感器数据训练模型并完成不同心跳信号的分类的任务 开源内容 https github com datawhalechina
  • HDU--1247:Hat’s Words (字典树)

    1 题目源地址 http acm hdu edu cn showproblem php pid 1247 2 解题思路 第一次接触字典树 代码也是参考别人的 代码参考博客 http blog csdn net red flame artic
  • [DevEco]解决“XXX“is not translated into en(English) ans zh(Chinese)

    问题描述 其实这个问题如字面意思 你在设置element string json的时候没有进行双语翻译 由于项目是国际版项目有中英双语string json配置文件 问题解决 分别在en element和zh element的string
  • QT---信号与槽机制

    QT 信号与槽机制 信号 signal 槽 slot 槽函数的命名格式 信号与槽的关联 实例1 自动关联 实例2 手动关联 信号 signal 信号是由对象改变状态后发射 emit 出去的事件 例如 一个pushButton 对象 最常见的
  • 一个android项目开发遇到的各种小问题(一)

    1 map格式字符串如何解析 借助json 先将字符串转化为json格式 再取值 JSONObject object new JSONObject posMap clientIden object getString iden 1 andr
  • windows下apache开启FastCGI

    1 在此链接下载一个合适的mod fcgid 文件 64位下载第一个 32位第二个 http www apachelounge com download 2 将解压后将文件中的 mod fcgid so 复制到apache的modules目
  • 用ProGuardGui混淆多个有依赖关系的项目,亲测有效

    前提 公司要混淆代码 A项目依赖B项目 要整体混淆AB这两个项目 步骤1 把AB两个项目通过maven命令打成同一个jar包 在pom文件里添加如下 执行maven命令语句 assembly assembly
  • SqueezeNet算法解析—鸟类识别—Paddle实战

    文章目录 一 理论基础 1 前言 2 设计理念 2 1 CNN微架构 CNN MicroArchitecture 2 2 CNN宏架构 CNN MacroArchitecture 2 3 模型网络设计探索过程 2 4 结构设计策略 2 5
  • Qt下载(多种下载通道+所有版本)

    Qt 体积很大 有 1GB 3GB 官方下载通道非常慢 相信很多读者会崩溃 所以建议大家使用国内的镜像网站 较快 或者使用迅雷下载 很快 作为 Qt 下载教程 本文会同时讲解以上三种下载方式 Qt 官方下载 非常慢 Qt 官网有一个专门的资
  • Qt CSV文件的创建,读写操作

    文章目录 一 CSV文件介绍 二 创建CSV文件 三 写入CSV文件 四 读取CSV文件 一 CSV文件介绍 逗号分隔值 Comma Separated Values CSV 有时也称为字符分隔值 因为分隔字符也可以不是逗号 其文件以纯文本