zoukankan      html  css  js  c++  java
  • Qt通过ODBC来操作Excel

    示例代码:

    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)");//这个就是插入的操作
     
     
     
     
     
     
     
     
     
     





  • 相关阅读:
    gulp+browser-sync使用方法
    小程序试用体验
    移动端调试总结
    函数防抖和函数分流
    页面返回顶部的方法总结
    POJ
    POJ
    UVA 10129 Play on Words(欧拉道路)
    UVA 10305 Ordering Tasks (拓扑排序)
    UVA 12657 Boxes in a Line(双向链表+小技巧)
  • 原文地址:https://www.cnblogs.com/fengkang1008/p/4652263.html
Copyright © 2011-2022 走看看