Qt中csv文件的导入与导出(zz)

转载 2013年12月04日 16:10:59
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 1.简介:   全称:Comma Separated Values。   是“逗号分隔值”的英文缩写,通常是纯文本文件,一般用wordWPS或是记事本打开。 2.规则: (1)开头不...

CSV文件格式解析器的实现:从字符串Split到FSM

本文乃Siliphen原创,转载请注明出处:   本文分为5小节,基本上就是我刚接触CSV文件到思考、实践做一个CSV解析器的过程的还原。希望我的思路也能带领你一步步从浅到深认识CSV文件格式。   ...

QT 读写CSV

1. 什么是CSV格式文档      所谓“CSV”,是Comma Separated Value(逗号分隔值)的英文缩写,通常都是纯文本文件。通常CSV文件开头是不留空的,以行为单位,每行记录多项...

Qt环境下读取csv数据进行矩阵运算

Qt环境下读取csv数据进行矩阵运算 1 csv.h头文件 #ifndef CSV_H #define CSV_H #include #include #include #include ...

QT中读取和写入CSV格式文档

1. 什么是CSV格式文档      所谓“CSV”,是Comma Separated Value(逗号分隔值)的英文缩写,通常都是纯文本文件。通常CSV文件开头是不留空的,以行为单位,每行记录多项...

Qt将Sqlite中的表数据导出为CSV格式表格数据

开发环境ubuntu16.04+Qt5.6.1   WIN7+Qt5.6.1两个环境都测试过 1.问题 写一个小软件的时候,带有导出excel功能,但是要在linux下运行,最后了解到csv格式,...

Qt 从csv文件中读取数据

最近项目中提出的需求是从excel表格中导入数据,查阅了很多资料之后,发现直接操作xls格式文件并不容易,之后找到了一个比较好的解决办法,那就是把xls文件另存为csv文件,然后在程序中进行操作。首先...

Qt操作Excel文件知识总结

Qt在windows平台下封装了Activex,可以同VAB中操作Excel一样读取xls文件,因此不支持linux平台。现在这个功能在Qt4.7中也不需要额外的商业许可了。这种方法比较通用,是常规方...
  • li_hai
  • li_hai
  • 2011年12月15日 14:40
  • 19386

使用Qt的QAxObject将Excel文件转成CSV文本文件

需要注意:以下代码需要在GUI环境的程序中才能运行,否则 setControl() 将会报错。#include #include #include #include bool ExcelToCs...
  • e5Max
  • e5Max
  • 2016年02月18日 11:32
  • 1287

pandas.read_csv to_csv参数详解

pandas.read_csv参数详解 pandas.read_csv参数整理   读取CSV(逗号分割)文件到DataFrame 也支持文件的部分导入和选择迭代 更多帮助参见:http://...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Qt中csv文件的导入与导出(zz)
举报原因:
原因补充:

(最多只允许输入30个字)