QOdbc 读写 excel
#include <QApplication>#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=‘‘; 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(‘ctb‘, ‘28‘)");db.exec( "insert into sheet(name, age) values(‘xw‘, ‘19‘)");db.exec( "insert into sheet(name, age) values(‘lg‘, ‘34‘)");// 关闭数据库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();}写入结果:
读取打印结果:
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。