#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();
}
写入结果:


读取打印结果:

QOdbc 读写 excel的更多相关文章

  1. MFC vs2012 Office2013 读写excel文件

    近期在忙一个小项目(和同学一起搞的),在这里客户要求不但读写txt,而且可以读写excel文件,这里本以为很简单,结果...废话少说,过程如下: 笔者环境:win7 64+VS2012+Office2 ...

  2. C# 使用 NPOI 库读写 Excel 文件(转载)

    NPOI 是开源的 POI 项目的.NET版,可以用来读写Excel,Word,PPT文件.在处理Excel文件上,NPOI 可以同时兼 容xls 和 xlsx.官网提供了一份Examples,给出了 ...

  3. Python3.4如何读写Excel

    在python3.x(散仙使用的版本是python3.4)里,我们应该如何操作excel. 首先在python3.4里,我们可以使用新的python类库,来支持3.x之后的读写excel 针对 03版 ...

  4. 用Python读写Excel文件(转)

    原文:google.com/ncr 虽然天天跟数据打交道,也频繁地使用Excel进行一些简单的数据处理和展示,但长期以来总是小心地避免用Python直接读写Excel文件.通常我都是把数据保存为以TA ...

  5. 使用NPOI读写Excel、Word

    NPOI 是 POI 项目的 .NET 版本.POI是一个开源的Java读写Excel.WORD等微软OLE2组件文档的项目. 使用 NPOI 你就可以在没有安装 Office 或者相应环境的机器上对 ...

  6. 【原创】.NET读写Excel工具Spire.Xls使用(1)入门介绍

    在.NET平台,操作Excel文件是一个非常常用的需求,目前比较常规的方法有以下几种: 1.Office Com组件的方式:这个方式非常累人,微软的东西总是这么的复杂,使用起来可能非常不便,需要安装E ...

  7. 【原创】.NET读写Excel工具Spire.Xls使用(2)Excel文件的控制

                  本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p/4288836.html .NET读写Excel工具Spire.Xls使用文章 ...

  8. 【原创】.NET读写Excel工具Spire.Xls使用(3)单元格控制

                  本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p/4288836.html .NET读写Excel工具Spire.Xls使用文章 ...

  9. 【原创】.NET读写Excel工具Spire.Xls使用(4)对数据操作与控制

                  本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p/4288836.html .NET读写Excel工具Spire.Xls使用文章 ...

随机推荐

  1. 用消息在Win32控制台程序多线程间进行通讯

      #include <stdio.h> #include <windows.h> //#include <iostream> //#include <pro ...

  2. Win32多线程编程(2) — 线程控制

    Win32线程控制只有是围绕线程这一内核对象的创建.挂起.恢复.终结以及通信等操作,这些操作都依赖于Win32操作系统提供的一组API和具体编译器的C运行时库函数.本篇围绕这些操作接口介绍在Windo ...

  3. C#图像处理(5):无损保存图片

    C#使用默认方法对图像进行保存的时候图像会有损失,以下提供无损保存的方法: /// <summary> /// 无损保存图片 /// </summary> /// <pa ...

  4. C#远程获取/读取网页内容

    转载自 :http://blog.csdn.net/gisfarmer/article/details/2836904 using System; using System.Collections.G ...

  5. Parser Error Message: Access is denied【转】

    PRB: Access Denied Error When You Make Code Modifications with Index Services Running View products ...

  6. 编译Boost 详细步骤

    vs2008编译boost [一.Boost库的介绍] Boost库是一个经过千锤百炼.可移植.提供源代码的C++库,作为标准库的后备,是C++标准化进程的发动机之一. Boost库由C++标准委员会 ...

  7. IntelliJ IDEA14如何配置tomcat

    http://doc.okbase.net/frank1234/archive/121479.html

  8. android 退出方案 导致内存泄露

    比较奇怪android没有给出一个统一的退出接口,网上查了很多材料也出现了一些错误,在此记录一下,遇到的,与总结的. 1.常见概念,方法 finish() 通知结束当前activity实例,finis ...

  9. VS2010中<无法打开包括文件:“iostream.h”:>错误解决方法

    C/C++ code? 1 2 #include <iostream.h> 改为: C/C++ code? 1 2 #include <iostream> using name ...

  10. 图铭Android平台银行卡号识别系统

    随着智能终端(智能手机及平板电脑)及移动通信(3G)的发展,原来运行在PC上的信息系统(如邮件系统.即时通信.网页浏览.协同办公.网络购物.社交网站.博客等)逐渐转移到智能终端设备上.可以预见未来几年 ...