Heim > Datenbank > MySQL-Tutorial > QOdbc读写excel

QOdbc读写excel

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Freigeben: 2016-06-07 15:55:34
Original
1911 Leute haben es durchsucht

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

#include

#include <QSqlDatabase>
Nach dem Login kopieren
#include <QDebug>
Nach dem Login kopieren
#include <QMessageBox>
Nach dem Login kopieren
#include <QSqlQuery>
Nach dem Login kopieren
#include <QVariant>
Nach dem Login kopieren
#include <QTime>
Nach dem Login kopieren
#include <QTextCodec>
Nach dem Login kopieren
void writeExcel(QString excelFilePath)
Nach dem Login kopieren
{
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
    // 创建一个数据库实例, 设置连接字符串
Nach dem Login kopieren
    QSqlDatabase db = QSqlDatabase::addDatabase("QODBC","excelexport");
Nach dem Login kopieren
Nach dem Login kopieren
    QString dsn = QString("DRIVER={Microsoft Excel Driver (*.xls)};DSN=&#39;&#39;; FIRSTROWHASNAMES=1; READONLY=FALSE;CREATE_DB=\"%1\";DBQ=%2").
Nach dem Login kopieren
            arg(excelFilePath).arg(excelFilePath);
Nach dem Login kopieren
    db.setDatabaseName(dsn);
Nach dem Login kopieren
    // 打开数据库
Nach dem Login kopieren
Nach dem Login kopieren
    if (!db.open())
Nach dem Login kopieren
Nach dem Login kopieren
    {
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
        qDebug()<< "open false";
Nach dem Login kopieren
Nach dem Login kopieren
        QMessageBox::about(NULL, "r", "open false");
Nach dem Login kopieren
Nach dem Login kopieren
    }
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
    // 创建表格
Nach dem Login kopieren
    QString sql = "create table sheet (name TEXT, age NUMBER)";
Nach dem Login kopieren
    QSqlQuery query(db);
Nach dem Login kopieren
    if (!query.exec(sql))
Nach dem Login kopieren
    {
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
        qDebug()<< "create table false!";
Nach dem Login kopieren
        QMessageBox::about(NULL, "r", "create table false!");
Nach dem Login kopieren
    }
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
    // 写入数据
Nach dem Login kopieren
    db.exec( "insert into sheet(name, age) values(&#39;ctb&#39;, &#39;28&#39;)");
Nach dem Login kopieren
    db.exec( "insert into sheet(name, age) values(&#39;xw&#39;, &#39;19&#39;)");
Nach dem Login kopieren
    db.exec( "insert into sheet(name, age) values(&#39;lg&#39;, &#39;34&#39;)");
Nach dem Login kopieren
    // 关闭数据库
Nach dem Login kopieren
Nach dem Login kopieren
    db.close();
Nach dem Login kopieren
Nach dem Login kopieren
}
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
void readExcel(const QString excelPath)
Nach dem Login kopieren
{
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
    // excel 数据库连接字符串 需要QODBC 驱动
Nach dem Login kopieren
    QSqlDatabase db = QSqlDatabase::addDatabase("QODBC","excelexport");
Nach dem Login kopieren
Nach dem Login kopieren
    QString connString = QString("Driver={Microsoft Excel Driver (*.xls)};Readonly=1;DriverId=790;Dbq=%1;DefaultDir=D:\\").arg(excelPath);
Nach dem Login kopieren
    db.setDatabaseName(connString);
Nach dem Login kopieren
    // 打开数据库
Nach dem Login kopieren
Nach dem Login kopieren
    if (!db.open())
Nach dem Login kopieren
Nach dem Login kopieren
    {
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
        qDebug()<< "open false";
Nach dem Login kopieren
Nach dem Login kopieren
        QMessageBox::about(NULL, "r", "open false");
Nach dem Login kopieren
Nach dem Login kopieren
    }
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
    //查询数据
Nach dem Login kopieren
    QString sql = "Select * from [sheet$]";
Nach dem Login kopieren
    QSqlQuery query(sql, db);
Nach dem Login kopieren
    while (query.next()) {
Nach dem Login kopieren
        //读取数据
Nach dem Login kopieren
        QString name = query.value(0).toString();
Nach dem Login kopieren
        int age = query.value(1).toInt();
Nach dem Login kopieren
        qDebug()<< name << age <<endl;
Nach dem Login kopieren
    }
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
    // 关闭数据库
Nach dem Login kopieren
Nach dem Login kopieren
    db.close();
Nach dem Login kopieren
Nach dem Login kopieren
}
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
int main(int argc, char *argv[])
Nach dem Login kopieren
{
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
    QApplication a(argc, argv);
Nach dem Login kopieren
    //中文支持
Nach dem Login kopieren
    QTextCodec::setCodecForLocale(QTextCodec::codecForName("system"));
Nach dem Login kopieren
    QTextCodec::setCodecForTr(QTextCodec::codecForName("system"));
Nach dem Login kopieren
    QTextCodec::setCodecForCStrings(QTextCodec::codecForName("system"));
Nach dem Login kopieren
    writeExcel("D:\\test01.xls");
Nach dem Login kopieren
    readExcel("D:\\test01.xls");
Nach dem Login kopieren
    return a.exec();
Nach dem Login kopieren
}
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
写入结果:
Nach dem Login kopieren
读取打印结果
Nach dem Login kopieren
Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage