首頁 > 資料庫 > mysql教程 > QOdbc读写excel

QOdbc读写excel

WBOY
發布: 2016-06-07 15:55:34
原創
1905 人瀏覽過

#include QApplication #include QSqlDatabase #include QDebug #include QMessageBox #include QSqlQuery #include QVariant #include QTime #include QTextCodec void writeExcel(QString excelFilePath) { // 创建一个数据库实例, 设置连接字符串 QSqlDa

#include

#include <QSqlDatabase>
登入後複製
#include <QDebug>
登入後複製
#include <QMessageBox>
登入後複製
#include <QSqlQuery>
登入後複製
#include <QVariant>
登入後複製
#include <QTime>
登入後複製
#include <QTextCodec>
登入後複製
void writeExcel(QString excelFilePath)
登入後複製
{
登入後複製
登入後複製
登入後複製
    // 创建一个数据库实例, 设置连接字符串
登入後複製
    QSqlDatabase db = QSqlDatabase::addDatabase("QODBC","excelexport");
登入後複製
登入後複製
    QString dsn = QString("DRIVER={Microsoft Excel Driver (*.xls)};DSN=&#39;&#39;; FIRSTROWHASNAMES=1; READONLY=FALSE;CREATE_DB=\"%1\";DBQ=%2").
登入後複製
            arg(excelFilePath).arg(excelFilePath);
登入後複製
    db.setDatabaseName(dsn);
登入後複製
    // 打开数据库
登入後複製
登入後複製
    if (!db.open())
登入後複製
登入後複製
    {
登入後複製
登入後複製
登入後複製
        qDebug()<< "open false";
登入後複製
登入後複製
        QMessageBox::about(NULL, "r", "open false");
登入後複製
登入後複製
    }
登入後複製
登入後複製
登入後複製
登入後複製
    // 创建表格
登入後複製
    QString sql = "create table sheet (name TEXT, age NUMBER)";
登入後複製
    QSqlQuery query(db);
登入後複製
    if (!query.exec(sql))
登入後複製
    {
登入後複製
登入後複製
登入後複製
        qDebug()<< "create table false!";
登入後複製
        QMessageBox::about(NULL, "r", "create table false!");
登入後複製
    }
登入後複製
登入後複製
登入後複製
登入後複製
    // 写入数据
登入後複製
    db.exec( "insert into sheet(name, age) values(&#39;ctb&#39;, &#39;28&#39;)");
登入後複製
    db.exec( "insert into sheet(name, age) values(&#39;xw&#39;, &#39;19&#39;)");
登入後複製
    db.exec( "insert into sheet(name, age) values(&#39;lg&#39;, &#39;34&#39;)");
登入後複製
    // 关闭数据库
登入後複製
登入後複製
    db.close();
登入後複製
登入後複製
}
登入後複製
登入後複製
登入後複製
void readExcel(const QString excelPath)
登入後複製
{
登入後複製
登入後複製
登入後複製
    // excel 数据库连接字符串 需要QODBC 驱动
登入後複製
    QSqlDatabase db = QSqlDatabase::addDatabase("QODBC","excelexport");
登入後複製
登入後複製
    QString connString = QString("Driver={Microsoft Excel Driver (*.xls)};Readonly=1;DriverId=790;Dbq=%1;DefaultDir=D:\\").arg(excelPath);
登入後複製
    db.setDatabaseName(connString);
登入後複製
    // 打开数据库
登入後複製
登入後複製
    if (!db.open())
登入後複製
登入後複製
    {
登入後複製
登入後複製
登入後複製
        qDebug()<< "open false";
登入後複製
登入後複製
        QMessageBox::about(NULL, "r", "open false");
登入後複製
登入後複製
    }
登入後複製
登入後複製
登入後複製
登入後複製
    //查询数据
登入後複製
    QString sql = "Select * from [sheet$]";
登入後複製
    QSqlQuery query(sql, db);
登入後複製
    while (query.next()) {
登入後複製
        //读取数据
登入後複製
        QString name = query.value(0).toString();
登入後複製
        int age = query.value(1).toInt();
登入後複製
        qDebug()<< name << age <<endl;
登入後複製
    }
登入後複製
登入後複製
登入後複製
登入後複製
    // 关闭数据库
登入後複製
登入後複製
    db.close();
登入後複製
登入後複製
}
登入後複製
登入後複製
登入後複製
int main(int argc, char *argv[])
登入後複製
{
登入後複製
登入後複製
登入後複製
    QApplication a(argc, argv);
登入後複製
    //中文支持
登入後複製
    QTextCodec::setCodecForLocale(QTextCodec::codecForName("system"));
登入後複製
    QTextCodec::setCodecForTr(QTextCodec::codecForName("system"));
登入後複製
    QTextCodec::setCodecForCStrings(QTextCodec::codecForName("system"));
登入後複製
    writeExcel("D:\\test01.xls");
登入後複製
    readExcel("D:\\test01.xls");
登入後複製
    return a.exec();
登入後複製
}
登入後複製
登入後複製
登入後複製
写入结果:
登入後複製
读取打印结果
登入後複製
相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板