Qt中csv文件的导入与导出

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

CSV

1.简介:

  全称:Comma Separated Values

  是“逗号分隔值”的英文缩写,通常是纯文本文件,一般用wordWPS或是记事本打开。

2.规则:

1)开头不留空,以行为单位。

2)可含或不含列名,含列名则居文件第一行。

3)一行数据部跨行,无空行。

4)以半角逗号作分隔符,列为空也要表达其存在。

5列内容如存在半角逗号(即,)则用半角引号(即"")将该字段值包含起来。内容如存在半角逗号(即,)则用半角引号(即"")将该字段值包含起来。

6列内容如存在半角引号(即")则应替换成半角双引号("")转义,并用半角引号(即"")将该字段值包含起来。 

7文件读写时引号,逗号操作规则互逆。

(8)内码格式不限,可为 ASCIIUnicode 或者其他。

(9)不支持特殊字符

3.使用:(csv文件的导入导出)

先看下一个基本demo的ui:


1)获取控件信息导入到csv文件中:

     void mainDialog::exportMsg()

     {

       //获取创建的csv文件名

       QString fileName = QFileDialog::getSaveFileName(this, tr("Excel file"), qApp->applicationDirPath (),

                                                   tr("Files (*.csv)"));

       if (fileName.isEmpty())

       return;

       //打开.csv文件

       QFile file(fileName);

       if(!file.open(QIODevice::WriteOnly | QIODevice::Text))

       {

           std::cerr << "Cannot open file for writing: "

                     << qPrintable(file.errorString()) << std::endl;

           return;

       }

       QTextStream out(&file);    

       //获取数据

       QString sName = ui->lineEdit->text();//姓名

       Int iAge = ui->spinBox->tvalue();//年龄

   

       out << tr("姓名,") << sName << ",\n";

       out << tr("年龄,") << iAge << ",\n";

       out << tr("1,") << tr("2,")<< tr("3,") << tr("4,") <<",\n";//表头          

       //获取表格内容

       int row = ui->tableWidget->rowCount();//表格总行数

       for(int i = 0; i < row; i ++)

       {

           for(int col = 0; col < 4; col++)

           {

               QString string = ui->tableWidget->item(i, col)->text();

               out << string << ",";// 写入文件

           }

           out << "\n";

       }

       QMessageBox::information(this, tr("导出数据成功"), tr("信息已保存在%1").arg(fileName), tr("确定"));

       file.close();

}

这就是导出之后.csv文件中的内容:


2)将csv文件中信息导入控件:

    void mainDialog::importMsg()

    {

        QString fileName = QFileDialog::getOpenFileName(this, tr("Excel file"), qApp->applicationDirPath (),

                                                   tr("Files (*.csv)"));

        QFile file(fileName);

        if(!file.open(QIODevice::ReadOnly | QIODevice::Text))

        {

           std::cerr << "Cannot open file for reading: "

                     << qPrintable(file.errorString()) << std::endl;

           return;

        }

        QStringList list;

        list.clear();

        QTextStream in(&file);

        int i =0;

        while(!in.atEnd())

        {

            QString fileLine = in.readLine();

            list = fileLine.split(",", QString::SkipEmptyParts);

            //姓名

            if(== 0) ui->lineEdit->setText(list.at(1));

            //年龄

            if(== 1) ui->spinBox->setValue(list.at(1));

            //表头

            if(== 2) ui->tableWidget->setHorizontalHeaderLabels(QStringList() << list.at(0) << list.at(1)

                                                      << list.at(2) << list.at(3);       

            //表内容

            if(== 3)

            {

                for(int a = 0; a < 4; a++)

                {

                    ui->tableWidget->setItem(0, a, new QTableWidgetItem(list.at(a)));

                }

            }

            if(> 3)

            {

                for(int b = 0; b < 4; b++)

                {

                    ui->tableWidget->setRowCount(i-2);//设置添加一行

                    ui->tableWidget->setItem(i-3, b, new QTableWidgetItem(list.at(b)));

                }

            }

            i++;

        }

        file.close();

    }

好了,完成啦。。。

Qt读写csv文件 一次性读取整个csv文件,先按换行符“\n”进行分割,再按分隔符“,”进行分割。实现复杂:相对于第一种实现方式,该方法需要处理编码问题和字节流转换问题,因此实现方式相对复杂一些。同时,该实现方式要求数据顺序不能改变,因为每行数据只存储在单独的QStringList中。readLine读取每行数据,再使用split进行分割,得到QStringList 数据。当数据量大的时候,使用该方法逐行写入文件文件I/O开销相对较大,导致写入速度变慢。进行写操作,并写入分隔符“,”和换行符“\n”。 阅读详情

相关推荐

工作问题和学习记录(五):Qt+读取CSV表格并以表格显示

Qt+读取CSV表格并以表格显示。CSV表格,是数据使用逗号(,)分隔,以呈现出一个表格形式。形式简单,那么操作起来就比较简单了。

shaoyan66的博客 2770

qtcsv:用于在Qt中读取和写入csv文件的库

qtcsv:用于在Qt中读取和写入csv文件的库

Qt文件导入导出txt格式;

Qt经常会涉及到execl文件的引入,或者将数据导出。本文章直说对txt的导入导出。下次说execl的文件导入,txt会比较多。 1.导入txt 如果你的是execl文档。可以先转换成csv格式(execl)自带。这会让间隔带上“,”然后在将后缀该txt 。就可以了。如自己写的读取的方法 //读取测试文件 void CompareForm::ReadtestFile() { QFile ...

weixin_42692504的博客 6001

QT 高效 导入导出excel , tableWidget显示

支持快速导入excel到 tableWidget显示, 网上资料导入都比较慢,此方法快速,高效。同时支持导出功能。 程序不完善,提供开发思路。

Qt读写CSV文件的几种方式及优劣

作为一种常见的数据交换格式,CSV(Comma Separated Values)文件常常用于数据导出导入等场合。在实际开发中,我们也需要使用Qt来实现CSV文件的读写操作。本篇博客将介绍使用Qt实现CSV读写的方法,并分析每种实现方式的优缺点。使用QStringListQTextStream实现CSV文件读写;使用QTextCodec及QByteArray实现CSV文件读写;使用QStandardItemModel实现CSV文件读写;

luoyayun361的专栏 1万+

QT-CSV文件读写

QT-CSV文件读写前言一、CSV文件初始化二、CSV写入三、CSV读取四、程序链接 前言 csv文件之所以被用户推荐使用,我觉得即可以用excel打开,同时也是可以用文本编辑器打开,而且文本内容的显示也是比较有规律,用户查看起来也是能清晰看的明白,所以这里其实就是已经讲得出来了,csv的操作,其实就是你平时使用txt文件操作,只是我们按照csv的格式(xxx,xxx 列列直接用英文逗号分开)进行文本保存,同时将文本的后缀名修改成csv罢了,接下来我们就进行读写的操作具体的了解。 一、CSV文件初始

u013083044的博客 8761

qt mysql导出csv_Qtcsv文件导入导出

转自:http://blog.csdn.net/mingxia_sui/article/details/7683030 CSV 1.简介: 全称:CommaSeparatedValues. 是“逗号分隔值”的英文缩写,通常是纯文本文件,一般用wordWPS或是记事本打开. 2.规则: (1)开头不留空,以行为单位. (2)可含或不含列名,含列名则居文件第一行. (3)一行数据部跨行,无空行. ...

weixin_33513255的博客 1729

Qtcsv文件导入导出(zz)

1.简介:   全称:Comma Separated Values。   是“逗号分隔值”的英文缩写,通常是纯文本文件,一般用wordWPS或是记事本打开。 2.规则: (1)开头不留空,以行为单位。 (2)可含或不含列名,含列名则居文件第一行。 (3)一行数据部跨行,无空行。 (4)以半角逗号作分隔符,列为空也要表达其存在。 (5)列内容如

u012444155的专栏 2219

Qt导出数据到EXCEL的两种方式 (*****)

目录Qt导出数据到EXCEL的两种方式QTQTableWidget数据保存至ExcelQt如何将数据保存成CSV文件直接保存为 csv文件,可在 excel中打开,简单方便。

ken2232的博客 5748

Qt qtablewidgetCSV文件的关系:简化数据处理流程的利器

Qt qtablewidgetCSV文件的关系:简化数据处理流程的利器 去发现同类优质开源项目:https://gitcode.com/ 在软件开发领域,表格数据的读取导出是常见的需求。今天,我们就来探讨一个开源项目——Qt qtablewidgetCSV文件的关系,该项目是如何将Qt框架中的QTableWidget控件CSV文件无缝对接,实现高效的数据处理。 项目介绍 Qt qtable...

gitblog_06796的博客 1112

qt windows 导入导出xls

说明:从qtableview导入导出excel和csv文件,excel包括xls和xlsx文件,需要包含头文件和lib库 #include Qt5AxContainerd.lib Qt5AxServerd.lib Qt5AxBased.lib 1、导入excel void qexceldemo::ImportExcel(QString fileName) { QAxObj

du_bingbing的博客 1758

工作笔记 -- QT数据库简易管理器

主要使用到的有单例模式、QT解压缩、QT占位符的使用、QT删除绝对/相对路径下的文件QTui界面的跳转等。整个程序均运用了.csv文件作为中转介质,也是一种较为常见的储存文件

weixin_59735183的博客 1977

BatchPortScan批量导入IP列表扫描、结果批量导出、扫描日志记录

ui->lab_progress->setText(QString("进度:%1/%2 (%.2f%)").arg(curr).arg(total).arg((curr*100.0)/total));out << "目标总数:" << m_resultList.count() << "\n===========================\n";writeLog(QString("【文件导入成功】共加载 %1 个目标IP").arg(m_ipList.count()), LOG_SUCCESS);

寒寒豆豆软件公司的博客 90

Qwen3-ForcedAlignerQT图形界面开发

本文介绍了如何在星图GPU平台上自动化部署Qwen3-ForcedAligner镜像,实现音频文本的强制对齐功能。该工具能够自动识别语音中每个单词的精确时间戳,广泛应用于语音标注、字幕生成和语言学习等场景,提升语音处理的效率和准确性。

weixin_36364707的博客 79

卡证检测矫正模型批量处理工具开发:基于Qt的图形化桌面应用

本文介绍了如何在星图GPU平台上自动化部署卡证检测矫正模型镜像,并基于此开发一款高效的图形化桌面应用。该工具能够批量处理身份证、银行卡等证件图片,自动完成检测、矫正信息提取,最终将结构化数据导出为Excel表格,极大提升了财务、人事等部门的办公效率。

weixin_35920379的博客 103
上一篇: Qt中文件操作遇到的。。。
下一篇: 使用QT对access数据库进行操作——数据库中表、记录和域的读取
岁小草
博客等级 码龄14年 114粉丝 10原创
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值