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

转载 2013年12月04日 11:59:23

1. 什么是CSV格式文档

     所谓“CSV”,是Comma Separated Value(逗号分隔值)的英文缩写,通常都是纯文本文件。通常CSV文件开头是不留空的,以行为单位,每行记录多项数据,每项数据用逗号 来分隔(标准英文逗号)。如用记事本写下:

name_1, num_1, file_1 
name_2, num_1, file_2 
name_3, num_3, file_3

保存为.csv 用excel 打开就是这样的:

image

2. 利用Qt写入CSV 文件

   Qt创建一个.csv文件就非常简单了:

复制代码
1 #include <QtCore/QCoreApplication>
2 #include <QFile>
3 #include <QString>
4
5  const QString FILE_PATH("E:\\test.csv");
6
7  int main(int argc, char *argv[])
8 {
9 QCoreApplication a(argc, argv);
10
11 QString line_0("0, aaa, 000\n");
12 QString line_1("1, bbb, 111\n");
13 QString line_2("2, ccc, 222\n");
14 QFile csvFile(FILE_PATH);
15
16 if (csvFile.open(QIODevice::ReadWrite))
17 {
18 csvFile.write(line_0.toAscii());
19 csvFile.write(line_1.toAscii());
20 csvFile.write(line_2.toAscii());
21 csvFile.close();
22 }
23 return a.exec();
24 }
复制代码

结果为:

image

    so easy.

头文件加上#include<QStringList>

3. QT读取CSV 文件

复制代码
1 const QString FILE_PATH("E:\\test.csv");
2
3  int main(int argc, char *argv[])
4 {
5 QCoreApplication a(argc, argv);
6
7 QFile csvFile(FILE_PATH);
8 QStringList CSVList;
9 CSVList.clear();
10
11 if (csvFile.open(QIODevice::ReadWrite))
12 {
13 QTextStream stream(&csvFile);
14 while (!stream.atEnd())
15 {
16 CSVList.push_back(stream.readLine());
17 }
18 csvFile.close();
19 }
20 Q_FOREACH(QString str, CSVList)
21 {
22 qDebug() << str<<"\n";
23 }
24 return a.exec();
25 }
复制代码

结果:

image

4. 一个简易的CSV解析器

    基于以上的介绍,实现一个CSV Parser就非常简单了。

.h

复制代码
1 #pragma once
2 #include <QStringList>
3 #include <QFile>
4 #include <boost/shared_ptr.hpp>
5
6  class CSVParser
7 {
8  public:
9 CSVParser(QString filePath);
10 ~CSVParser(void);
11
12  public:
13 bool setCSVData(const QStringList& CSVList);
14 QStringList getCSVData();
15
16  private:
17 boost::shared_ptr<QFile> CSVFile_;
18 };
复制代码

.cpp

复制代码
1 #include <QTextStream>
2
3 #include "CSVParser.h"
4
5 CSVParser::CSVParser(QString filePath)
6 {
7 CSVFile_ = boost::shared_ptr<QFile>(new QFile(filePath));
8 CSVFile_->open(QIODevice::ReadWrite);
9 }
10
11 CSVParser::~CSVParser(void)
12 {
13 CSVFile_->close();
14 }
15
16  // 注意, QStringList 的参数必须符合csv格式: 逗号分隔,\n结尾
17 bool CSVParser::setCSVData(const QStringList& CSVList)
18 {
19 if (CSVList.empty())
20 return false;
21
22 if (!CSVFile_->isOpen())
23 return false;
24
25 if (!CSVFile_->resize(0))
26 return false;
27
28 Q_FOREACH(QString str, CSVList)
29 {
30 CSVFile_->write(str.toAscii());
31 }
32 CSVFile_->flush();
33 return true;
34 }
35 QStringList CSVParser::getCSVData()
36 {
37 QStringList CSVList;
38 CSVList.clear();
39
40 QTextStream stream(CSVFile_.get());
41
42 while (!stream.atEnd())
43 {
44 CSVList.push_back(stream.readLine());
45 }
46
47 return CSVList;
48
49 }

用python 读取和写入CSV格式的文件

This Python 3 tutorial covers how to read CSV data in from a file and then use it in Python. For thi...
  • guilanl
  • guilanl
  • 2016年11月03日 12:03
  • 3732

C# 读取EXCEL(CSV文件方式)

最近遇到一件事,要把所有人员信息(通过excel给出)生成一个静态页面,代码示例如下: 名字:张三 职业:工程师 名字:李四 职业:教师 ...
  • u012343179
  • u012343179
  • 2016年10月20日 19:42
  • 1754

Qt Sqlite表中数据导出为csv格式表格

  • 2016年09月08日 11:22
  • 633KB
  • 下载

用python 读取和写入CSV格式的文件

This Python 3 tutorial covers how to read CSV data in from a file and then use it in Python. For thi...
  • guilanl
  • guilanl
  • 2016年11月03日 12:03
  • 3732

txt文档转为csv格式后出现#NAME%情况

问题如题。 首先说明,出现#NAME%并不属于乱宝马情况,而是属于公式书写有误。 说一下我碰到的情况以及解决的办法。 碰到的问题如下: 我的txt文本内容每一行都是以逗号隔开,类似...
  • qq_36769100
  • qq_36769100
  • 2017年12月12日 14:14
  • 55

【学习记录】C#保存数据至CSV文档 & DateTime格式模式控制解释

数据类的定义: public class Result_Display { private string id; public string ID ...
  • sinat_39433218
  • sinat_39433218
  • 2017年12月11日 18:42
  • 58

有关使用xsl输出csv格式文档的实践小结

一般使用xsl样式文件显示xml文件内容,输出html文件格式(用于展示) 但可能有时候我们还是有输出csv格式的需求,实现方案应该是多元化的,其中利用xsl样式文件是一种不错的选择 注:问题的解决核...
  • SCHOLAR_II
  • SCHOLAR_II
  • 2013年06月25日 16:55
  • 1308

PHP生成CSV格式文档

转自 http://zccst.iteye.com/blog/1538594 1,下载CSV格式文档  唯一需要特别注意的是编码。  Php代码   include_o...
  • matrixchan
  • matrixchan
  • 2013年08月29日 17:01
  • 425

PHP 导入excel文档csv格式获取内容

  • 2011年11月26日 14:42
  • 269B
  • 下载

直接读取CSV格式的cpp文件

  • 2012年04月22日 00:34
  • 4KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:QT中读取和写入CSV格式文档
举报原因:
原因补充:

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