示例代码:

  1. #include<QtCore/QCoreApplication>
  2. #include<QtSql>
  3. #include<QObject>
  4. #include<qdebug.h>
  5. int main(int argc,char*argv[])
  6. {
  7. QCoreApplication a(argc, argv);
  8. QSqlDatabase db =QSqlDatabase::addDatabase("QODBC");
  9. if(!db.isValid())
  10. {
  11. qDebug()<<"Type Error!";
  12. return0;
  13. }
  14. /*
  15. * Excel 2003
  16. * db.setDatabaseName("Driver={Microsoft Excel Driver (*.xls)};Readonly=0;DriverId=790;Dbq=d:\\temp\\book1.xls;DefaultDir=d:\\temp");
  17. */
  18. /*
  19. * Excel 2007及以上
  20. */
  21. QString connString =QString("Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=%1")
  22. .arg("D:\\ProgramProject\\ODBC_Excel\\ODBC_Excel\\data.xlsx");
  23. db.setDatabaseName(connString);
  24. /*
  25. * 其他操作与数据库的操作是一样的
  26. */
  27. if( db.open())
  28. {
  29. qDebug()<<"Open Excel Successful!";
  30. QSqlQuery query(db);
  31. query.exec("select name,age from [sheet1$]");
  32. while(query.next())
  33. {
  34. QString strName = query.value(0).toString();
  35. QString strAge = query.value(1).toString();
  36. qDebug()<< strName << strAge;
  37. }
  38. }
  39. else
  40. qDebug()<< db.lastError().text();
  41. /*
  42. * 善后操作
  43. */
  44. db.close();
  45. db.removeDatabase(connString);
  46. return0;
  47. //return a.exec();//不进入事件循环,直接结束程序
  48. }

 

1、将Excel文件(例如book.xls)看成一个数据库,其中的每一个工作表(sheet)看成数据库表。假设Excel中的第一行为字段名,所以你定义的范围中必须要包括第一行的内容。

2、表的名字后面一定要加$和两边的方括号(插入一行数据,标准SQL语句,表名必须用[Excel文件名$]格式,读取Excel表中数据,标准SQL语句,表名必须用[表名$]格式),创建表时不需要这些。
  1. query.exec("CREATE TABLE guest (visitor text,age int,comments text)");//这个就是创建表的操作
  2. query.exec("insert into [sheet1$] values(1, 'Ane Brun',7)");//这个就是插入的操作
 
 
 
 
 
 
 
 
 
 

Qt通过ODBC来操作Excel的更多相关文章

  1. 在Qt中用QAxObject来操作Excel

        目录(?)[+]   下一篇:用dumpcpp工具生成的excel.h/excel.cpp来操纵Excel 最近写程序中需要将数据输出保存到Excel文件中.翻看<C++ GUI Pro ...

  2. 转 在Qt中用QAxObject来操作Excel

    最近写程序中需要将数据输出保存到Excel文件中.翻看<C++ GUI Programming with Qt 4>(Second Edition)发现可以在Qt中运用ActiveX控件, ...

  3. QT操作EXCEL

    介绍一下最基本的QT对EXCEL的读写操作. 声明:转载于:http://blog.csdn.net/czyt1988/article/details/52121360 在使用QT的操作数据库的时候, ...

  4. Qt QAxObject操作excel文件过程总结(转):

    正好同事问道Qt下操作excel. 转自:http://blog.csdn.net/a156392343/article/details/48092515 配制方面: 1.确保Excel软件在本地服务 ...

  5. Qt之操作Excel

    Visual Basic for Applications(VBA)是一种Visual Basic的一种宏语言,主要能用来扩展Windows的应用程式功能,特别是Microsoft Office软件. ...

  6. qt 操作excel表格

     自己编写的一个Qt C++类,用于操作excel表格,在Qt中操作excel需在.pro中增加CONFIG+=qaxcontainer配置. 1.打开Excel:objExcel = new QAx ...

  7. VS2010 C++ 操作Excel表格的编程实现

    转载请注明原文网址: http://www.cnblogs.com/xianyunhe/archive/2011/09/25/2190485.html 通过VC实现对Excel表格的操作的方法有多种, ...

  8. 在 VS2008 下操作 Excel 的方法总结

      这些天做个软件,需要读取 Excel 并导入到数据库中,所以研究了一下在 VC 下操作 Excel 的方法,这里做个总结,以作备忘. 一.最常用的 OLE 自动化方式 这个方式应该说是功能最全的方 ...

  9. 一个操作EXCEL的C#类ExcelUtils

    近期在公司里一直从事服务类的工作,涉及到非常多excel的处理.部分工作内容是每天反复的,仅仅是每天的数据不同而已.我遇到的一个问题是客户每天发送的几种数据有些excel中的字段顺序是一致的,有些是不 ...

随机推荐

  1. bzoj 2428: [HAOI2006]均分数据 && bzoj 3680 : 吊打XXX 模拟退火

    每次把元素随便扔随机一个初始解,退火时每次随机拿一个元素扔到随机一个集合里,当温度高时因为状态不稳定扔到那个元素和最小的里边. 如果新解优,更新ans. 把原式拆一下,就可以用int存了. bzoj ...

  2. HYSBZ(BZOJ) 4300 绝世好题(位运算,递推)

    HYSBZ(BZOJ) 4300 绝世好题(位运算,递推) Description 给定一个长度为n的数列ai,求ai的子序列bi的最长长度,满足bi&bi-1!=0(2<=i<= ...

  3. Python word_cloud 部分文档翻译 标签云系列(二)

    转载地址:https://zhuanlan.zhihu.com/p/20436581上文末尾提到 Python 下还有一款词云生成器.amueller/word_cloud · GitHub 可以直接 ...

  4. 什么是oauth2

    对于目前大部分Web应用来说,用户认证基本上都由应用自身来完成.具体来说,Web应用利用自身存储的用户凭证(基本上是用户名/密码)与用户提供的凭证进行比较进而确认其真实身份.但是这种由Web应用全权负 ...

  5. C陷阱与缺陷的个人知识点摘录

    编译过程的一点心得体会: .h文件其实只在预处理的过程用到,用来将类似#include <stdio.h>这样的行展开为具体内容. 那些标准库或者其他库中的函数,是在链接的过程中连接器把相 ...

  6. SQL2005函数大全

    表达式:是常量.变量.列或函数等与运算符的任意组合.以下参数中表达式类型是指表达式经运算后返回的值的类型 字符串函数 函数名称 参数 示例 说明 ascii (字符串表达式) select ascii ...

  7. 安装SQL Sever数据库失败的解决办法

    视频链接:https://www.bilibili.com/video/av12651739/ 我安装了SQL Sever2014.遇到了好多好多问题啊,整的我都快疯了.大致遇到的问题和解决办法如下. ...

  8. IIS错误整理收集【持续更新】

    一.HTTP 错误 403.14 - Forbidden HTTP 错误 403.14 - Forbidden,Web 服务器被配置为不列出此目录的内容. 解决方案:修改程序池.NET Framewo ...

  9. c# lock的误解

    一直以为lock 一个实例就可以了,没想到实例的类型还是有区别的 static object lockObjStatic = new object(); object lockObj = new ob ...

  10. Codeforces 877 C. Slava and tanks

    http://codeforces.com/problemset/problem/877/C   C. Slava and tanks time limit per test 2 seconds me ...