当前位置:Gxlcms > 数据库问题 > Qt通过ODBC来操作Excel

Qt通过ODBC来操作Excel

时间:2021-07-01 10:21:17 帮助过:3人阅读

<QtCore/QCoreApplication>
  • #include <QtSql>
  • #include <QObject>
  • #include <qdebug.h>
  • int main(int argc, char *argv[])
  • {
  • QCoreApplication a(argc, argv);
  • QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
  • if(!db.isValid())
  • {
  • qDebug() << "Type Error!";
  • return 0;
  • }
  • /*
  • * Excel 2003
  • * db.setDatabaseName("Driver={Microsoft Excel Driver (*.xls)};Readonly=0;DriverId=790;Dbq=d:\\temp\\book1.xls;DefaultDir=d:\\temp");
  • */
  • /*
  • * Excel 2007及以上
  • */
  • QString connString = QString("Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=%1")
  • .arg("D:\\ProgramProject\\ODBC_Excel\\ODBC_Excel\\data.xlsx");
  • db.setDatabaseName(connString);
  • /*
  • * 其他操作与数据库的操作是一样的
  • */
  • if ( db.open())
  • {
  • qDebug() << "Open Excel Successful!";
  • QSqlQuery query(db);
  • query.exec("select name,age from [sheet1$]");
  • while (query.next())
  • {
  • QString strName = query.value(0).toString();
  • QString strAge = query.value(1).toString();
  • qDebug() << strName << strAge;
  • }
  • }
  • else
  • qDebug() << db.lastError().text();
  • /*
  • * 善后操作
  • */
  • db.close();
  • db.removeDatabase(connString);
  • return 0;
  • //return a.exec();//不进入事件循环,直接结束程序
  • }

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












    来自为知笔记(Wiz)

    Qt通过ODBC来操作Excel

    标签:

    人气教程排行