转自:http://blog.csdn.net/mingxia_sui/article/details/7683030

CSV

1.简介:

全称:Comma Separated Values。

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

2.规则:

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

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

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

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

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

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

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

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

(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(i == 0) ui->lineEdit->setText(list.at(1));

//年龄

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

//表头

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

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

//表内容

if(i == 3)

{

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

{

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

}

}

if(i > 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文件的导入与导出的更多相关文章

  1. ACCESS表与CSV文件相互导入、导出的SQL语句

    一.将ACCESS表导出为CSV文件:Select * INTO [TEXT;FMT=CSV;DELIMITED;HDR=YES;DATABASE=E:\temp\].test.csv FROM Sh ...

  2. [Excel] CsvHelper---C#关于CSV文件的导入和导出以及转化 (转载)

    点击下载 CsvHelper.rar 这个类是关于Csv文件的一些高级操作1.DataTable导出到CSV2.将Csv读入DataTable看下面代码吧 /// <summary> // ...

  3. mysql中csv文件的导入导出

    导出例子: select *from testinto outfile 'D:test.csv'fields terminated by ',' optionally enclosed by '&qu ...

  4. 前端必读3.0:如何在 Angular 中使用SpreadJS实现导入和导出 Excel 文件

    在之前的文章中,我们为大家分别详细介绍了在JavaScript.React中使用SpreadJS导入和导出Excel文件的方法,作为带给广大前端开发者的"三部曲",本文我们将为大家 ...

  5. csv文件批量导入数据到sqlite。

    csv文件批量导入数据到sqlite. 代码: f = web.input(bs_switch = {})  # bs_switch 为from表单file字段的namedata =[i.split( ...

  6. Oracle学习——dmp文件(表)导入与导出

    Oracle学习——dmp文件(表)导入与导出 2014-12-28      0个评论    来源:张文康 廊坊师范学院信息技术提高班 第九期   收藏    我要投稿 前言 关于dmp文件我们用的 ...

  7. 使用PHPExcel实现Excel文件的导入和导出(模板导出)

    在之前有写过一篇文章讲述了使用PHP快速生成excel表格文件并下载,这种方式生成Excel文件,生成速度很快,但是有缺点是:1.单纯的生成Excel文件,生成的文件没有样式,单元格属性(填充色,宽度 ...

  8. Weka里如何将arff文件或csv文件批量导入MySQL数据库(六)

    这里不多说,直接上干货! 前提博客是 Weka中数据挖掘与机器学习系列之数据格式ARFF和CSV文件格式之间的转换(四) 1.将arff文件批量导入MySQL数据库 我在这里,arff文件以Weka安 ...

  9. 第32课 Qt中的文件操作

    1. Qt的中IO操作 (1)Qt中IO操作的处理方式 ①Qt通过统一的接口简化了文件和外部设备的操作方式 ②Qt中的文件被看作一种特殊的外部设备 ③Qt中的文件操作与外部设备的操作相同 (2)IO操 ...

随机推荐

  1. poj 1163 The Triangle &amp;poj 3176 Cow Bowling (dp)

    id=1163">链接:poj 1163 题意:输入一个n层的三角形.第i层有i个数,求从第1层到第n层的全部路线中.权值之和最大的路线. 规定:第i层的某个数仅仅能连线走到第i+1层 ...

  2. linux shell 的前世今生和流行BASH SHELL的特点

    前言 shell作为用户和操作系统内核交互的接口,也不断的在发展迭代.shell的发展也离不开unix/linux 系统的发展.并且在开源社区对shell的发展也起到了推动作用. 内容思维导图简介 发 ...

  3. php 面向对象的三大要素(封装、继承、多态)以及重写(override)和重载(overload)的举例说明

    PHP是一种HTML内嵌式的,用来制作动态网页的服务器端的脚本语言.其特点是:开发周期短,稳定安全,简单易学,免费开源,良好的跨平台特性.PHP是一种面向对象的程序设计语言,目前已成为全球最受欢迎的五 ...

  4. Spring MVC的映射请求

    一.SpringMVC常用注解 @Controller 声明Action组件 @Service    声明Service组件    @Service("myMovieLister" ...

  5. Sping框架概述

    一.什么是spring框架 spring是J2EE应用程序框架,是轻量级的IoC和AOP的容器框架,主要是针对javaBean的生命周期进行管理的轻量级容器,可以单独使用,也可以和Struts框架,i ...

  6. java基础知识查漏 二

    一.java基本数据类型所占的内存大小 在Java中一共有8种基本数据类型,其中有4种整型,2种浮点类型,1种用于表示Unicode编码的字符 单元的字符类型和1种用于表示真值的boolean类型.( ...

  7. spark 划分stage Wide vs Narrow Dependencies 窄依赖 宽依赖 解析 作业 job stage 阶段 RDD有向无环图拆分 任务 Task 网络传输和计算开销 任务集 taskset

    每个job被划分为多个stage.划分stage的一个主要依据是当前计算因子的输入是否是确定的,如果是则将其分在同一个stage,从而避免多个stage之间的消息传递开销. http://spark. ...

  8. Jsp中操作页面显示

    通常我们想改变网页中的显示可以用下面的方式. <script type="text/javascript">function show(){     document. ...

  9. SE18 BADI定义 / SE19 BADI 实现

    明天花30分 再研究下这个: 如果你知道一个BADI名称,可以: 1)使用SE18,输入该BADI名称后,选择Interface,然后查看对应的接口实施样例代码(Example implementat ...

  10. 火狐浏览器使用firebug获取xpath和css path

    工作中,常常会用到网页元素的定位方式,常用的有xpath和css path两种定位方式. 现在简单介绍如何使用工具自动生成元素的定位字符串. 首先介绍在火狐浏览器上使用FireBug及其扩展FireP ...