1. #include <QApplication>
  2. #include <QSqlDatabase>
  3. #include <QDebug>
  4. #include <QMessageBox>
  5. #include <QSqlQuery>
  6. #include <QVariant>
  7. #include <QTime>
  8. #include <QTextCodec>
  9. void writeExcel(QString excelFilePath)
  10. {
  11.     // 创建一个数据库实例, 设置连接字符串
  12.     QSqlDatabase db = QSqlDatabase::addDatabase("QODBC","excelexport");
  13.     QString dsn = QString("DRIVER={Microsoft Excel Driver (*.xls)};DSN=''; FIRSTROWHASNAMES=1; READONLY=FALSE;CREATE_DB=\"%1\";DBQ=%2").
  14.             arg(excelFilePath).arg(excelFilePath);
  15.     db.setDatabaseName(dsn);
  16.     // 打开数据库
  17.     if (!db.open())
  18.     {
  19.         qDebug()<< "open false";
  20.         QMessageBox::about(NULL, "r", "open false");
  21.     }
  22.     // 创建表格
  23.     QString sql = "create table sheet (name TEXT, age NUMBER)";
  24.     QSqlQuery query(db);
  25.     if (!query.exec(sql))
  26.     {
  27.         qDebug()<< "create table false!";
  28.         QMessageBox::about(NULL, "r", "create table false!");
  29.     }
  30.     // 写入数据
  31.     db.exec( "insert into sheet(name, age) values('ctb', '28')");
  32.     db.exec( "insert into sheet(name, age) values('xw', '19')");
  33.     db.exec( "insert into sheet(name, age) values('lg', '34')");
  34.     // 关闭数据库
  35.     db.close();
  36. }
  37. void readExcel(const QString excelPath)
  38. {
  39.     // excel 数据库连接字符串 须要QODBC 驱动
  40.     QSqlDatabase db = QSqlDatabase::addDatabase("QODBC","excelexport");
  41.     QString connString = QString("Driver={Microsoft Excel Driver (*.xls)};Readonly=1;DriverId=790;Dbq=%1;DefaultDir=D:\\").arg(excelPath);
  42.     db.setDatabaseName(connString);
  43.     // 打开数据库
  44.     if (!db.open())
  45.     {
  46.         qDebug()<< "open false";
  47.         QMessageBox::about(NULL, "r", "open false");
  48.     }
  49.     //查询数据
  50.     QString sql = "Select * from [sheet$]";
  51.     QSqlQuery query(sql, db);
  52.     while (query.next()) {
  53.         //读取数据
  54.         QString name = query.value(0).toString();
  55.         int age = query.value(1).toInt();
  56.         qDebug()<< name << age <<endl;
  57.     }
  58.     // 关闭数据库
  59.     db.close();
  60. }
  61. int main(int argc, char *argv[])
  62. {
  63.     QApplication a(argc, argv);
  64.     //中文支持
  65.     QTextCodec::setCodecForLocale(QTextCodec::codecForName("system"));
  66.     QTextCodec::setCodecForTr(QTextCodec::codecForName("system"));
  67.     QTextCodec::setCodecForCStrings(QTextCodec::codecForName("system"));
  68.     writeExcel("D:\\test01.xls");
  69.     readExcel("D:\\test01.xls");
  70.     return a.exec();
  71. }
  72. 写入结果:

  1. 读取打印结果:

QOdbc 读写 excel的更多相关文章

  1. MFC vs2012 Office2013 读写excel文件

    近期在忙一个小项目(和同学一起搞的),在这里客户要求不但读写txt,而且可以读写excel文件,这里本以为很简单,结果...废话少说,过程如下: 笔者环境:win7 64+VS2012+Office2 ...

  2. C# 使用 NPOI 库读写 Excel 文件(转载)

    NPOI 是开源的 POI 项目的.NET版,可以用来读写Excel,Word,PPT文件.在处理Excel文件上,NPOI 可以同时兼 容xls 和 xlsx.官网提供了一份Examples,给出了 ...

  3. Python3.4如何读写Excel

    在python3.x(散仙使用的版本是python3.4)里,我们应该如何操作excel. 首先在python3.4里,我们可以使用新的python类库,来支持3.x之后的读写excel 针对 03版 ...

  4. 用Python读写Excel文件(转)

    原文:google.com/ncr 虽然天天跟数据打交道,也频繁地使用Excel进行一些简单的数据处理和展示,但长期以来总是小心地避免用Python直接读写Excel文件.通常我都是把数据保存为以TA ...

  5. 使用NPOI读写Excel、Word

    NPOI 是 POI 项目的 .NET 版本.POI是一个开源的Java读写Excel.WORD等微软OLE2组件文档的项目. 使用 NPOI 你就可以在没有安装 Office 或者相应环境的机器上对 ...

  6. 【原创】.NET读写Excel工具Spire.Xls使用(1)入门介绍

    在.NET平台,操作Excel文件是一个非常常用的需求,目前比较常规的方法有以下几种: 1.Office Com组件的方式:这个方式非常累人,微软的东西总是这么的复杂,使用起来可能非常不便,需要安装E ...

  7. 【原创】.NET读写Excel工具Spire.Xls使用(2)Excel文件的控制

                  本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p/4288836.html .NET读写Excel工具Spire.Xls使用文章 ...

  8. 【原创】.NET读写Excel工具Spire.Xls使用(3)单元格控制

                  本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p/4288836.html .NET读写Excel工具Spire.Xls使用文章 ...

  9. 【原创】.NET读写Excel工具Spire.Xls使用(4)对数据操作与控制

                  本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p/4288836.html .NET读写Excel工具Spire.Xls使用文章 ...

随机推荐

  1. springmvc4+hibernate4分页查询功能

    Springmvc+hibernate成为现在很多人用的框架整合,最近自己也在学习摸索,由于我们在开发项目中很多项目都用到列表分页功能,在此参考网上一些资料,以springmvc4+hibnerate ...

  2. 从free命令看Linux内存管理

    free命令是Linux系统下用来查看内存使用情况的,例如: $ free -h total used free shared buffers cached Mem: 7.8G 6.6G 1.3G 0 ...

  3. hashtable 和dictionary

    hashtable 通过 key 和value 进行访问 不是 通过 索引访问 对类型没有强制规定 ,所以类型危险 容易出错 无效的key时 会返回空 dictionary 与hashtable 相区 ...

  4. IOS 请求服务器的方式

    IOS 中请求服务器的方式主要有Get 和Post . Get :[1]向服务器发索取数据的一种请求; [2]获取信息,而不是修改信息,类似数据库查询功能一样,数据不会被修改;请求的参数会跟在url后 ...

  5. hdu 素数环

    算法:搜索 题意:相邻的两个数之和是素数,别忘了最后一个,和第一个 Problem Description A ring is compose of n circles as shown in dia ...

  6. SQL学习笔记——SQL中的数据查询语句汇总

    where条件表达式 --统计函数 Select count(1) from student; --like模糊查询 --统计班上姓张的人数 select count(*) from student ...

  7. IT编程培训,线上线下,孰优孰劣

    现在Java培训机构确实参差不齐,主要有在线培训和线下培训两大类: 1,虚拟和现实的区别:不论视觉,听觉,体验上在线教学都不如线下教学. 2,学费问 题:在线教学由于成本低,不受地域,教学设备限制一般 ...

  8. iframe与frameset有什么区别

    frame,iframe,frameset 的区别 <FRAMESET> <FRAME><NOFRAMES><IFRAME>欲明白本篇[HTML剖析]之 ...

  9. django-filter 使用Filter来筛选你的数据

    django-filter Django-filter is a generic, reusable application to alleviate writing some of the more ...

  10. HTML5实战之桌面通知

    桌面通知功能能够让浏览器即使是最小化状态也能将消息通知给用户.这和WebIM是最为天然的结合.不过,目前支持Desktop Notification功能的浏览器只有Chrome5+. 关于通知的基础知 ...