Excel 使用ODBC直接访问

原来Excel 可以使用ODBC直接访问啊,一直以来都是一格一格读取,比较烦,这次又学习了!!
此处记录ODBC连接Excel的DSN字符串:
“DRIVER={Microsoft Excel Driver (*.xls)};FIRSTROWHASNAMES=1;READONLY=FALSE;DBQ=%1”
—%1 为要连接的Excel文件。
—READONLY=FALSE; 如果没有这段,excel默认是按照只读打开的,只能select 操作
—FIRSTROWHASNAMES=1; 这段表明excel文件的第一行是列名。

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    QSqlDatabase excel = QSqlDatabase::addDatabase("QODBC");
    QString ExcelFileName = QFileDialog::getOpenFileName(this,tr("选择要打开的文件"),".",tr("Excel File(*.xls)"));
    if(ExcelFileName.isEmpty())
        return;
    QString dsn =QString("DRIVER={Microsoft Excel Driver (*.xls)};FIRSTROWHASNAMES=1;READONLY=FALSE;DBQ=%1").arg(ExcelFileName);
    excel.setDatabaseName(dsn);
    if(!excel.open())
    {
        qDebug() <<"open database file "<<ExcelFileName<<"error!";
        return;
    }
    QSqlQuery query = QSqlQuery(excel);
    query.exec("select * from [people$]");

    //读取记录
    qDebug()<<query.record().count();
    query.next();
    //QTextCodec *codec = QTextCodec::codecForName("UTF-8");

    qDebug()<<query.value("name").toString();
    ui->lineEdit->setText(query.value("name").toString());

    //插入记录
    if(!query.exec("insert into [people$](id,name,old)  values(5,'nowhaha',43)"))
    {
        //qDebug()<<   query.lastError().text();
        QMessageBox::information(this,"info", query.lastError().text());
    }


}
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值