Qt通过ODBC读取excel文件
生活随笔
收集整理的這篇文章主要介紹了
Qt通过ODBC读取excel文件
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
之前替學(xué)校考試科用C++ Builder做過一個(gè)小的數(shù)據(jù)庫工具,處理excel表格用的,現(xiàn)在想轉(zhuǎn)換到Qt平臺下來,在網(wǎng)上搜了搜有一些利用OBDC讀取xls文件的教程:
http://hi.baidu.com/kxw102/item/770c496d5736470ca0cf0f1d
http://blog.sina.com.cn/s/blog_55758bcf0100d4lm.html
試了一下可以用,但是轉(zhuǎn)換到圖形界面中遇到點(diǎn)問題,在用QSqlTableModel類的setTable()方法使無法讀取到[Sheet1$]表格,將其換為QsqlQueryModel后問題解決。代碼如下:
頭文件mainWindow.h:
#ifndef mainWindow_H #define mainWindow_H#include <QWidget> #include <QTextEdit> #include <QSqlQueryModel>class QSqlTableModel; class QTableView;enum {Id = 0,Eat = 1,Taxi = 2,Train = 3 };class mainWindow : public QWidget {Q_OBJECTpublic:mainWindow();bool createConnection();void createFakeData();void printMessage(QString message);private:QSqlQueryModel *model;QTableView *view;QTextEdit *textEdit;};#endif?
類定義文件mainWindow.cpp:
#include <QtGui> #include <QtSql>#include "mainWindow.h"mainWindow::mainWindow() {textEdit=new QTextEdit();if (!createConnection())return;model = new QSqlTableModel(this);model->setQuery("SELECT * FROM [Test$]");model->setHeaderData(Eat, Qt::Horizontal, tr("Eat"));model->setHeaderData(Taxi, Qt::Horizontal, tr("Taxi"));model->setHeaderData(Train, Qt::Horizontal, tr("Train"));view = new QTableView;view->setModel(model);view->setSelectionMode(QAbstractItemView::SingleSelection);view->setSelectionBehavior(QAbstractItemView::SelectRows);view->setColumnHidden(Id, false);view->resizeColumnsToContents();view->setEditTriggers(QAbstractItemView::NoEditTriggers);QHeaderView *header = view->horizontalHeader();header->setStretchLastSection(true);QVBoxLayout *mainLayout = new QVBoxLayout;mainLayout->addWidget(view);mainLayout->addWidget(textEdit);setLayout(mainLayout);setWindowTitle(tr("xlsProcessor")); }bool mainWindow::createConnection() {QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");db.setDatabaseName("Driver={Microsoft Excel Driver (*.xls)};Readonly=0;DriverId=790;Dbq=D:\\test.xls;DefaultDir=D:\\");if (!db.open()){printMessage(tr("Database Error"));return false;}printMessage(tr("Connected Successed!"));return true; }void mainWindow::printMessage(QString message) {textEdit->append(message); }?
最終效果:
?
轉(zhuǎn)載于:https://www.cnblogs.com/guaipojushi/archive/2012/11/18/2775995.html
總結(jié)
以上是生活随笔為你收集整理的Qt通过ODBC读取excel文件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何删除.sys的流氓文件
- 下一篇: 在VB应用程序中调用Excel2000