传统的读取方式是通过Excel.Application,这种方式不仅操作繁琐,而且速度也不快。

通过odbc读取,可以使用select语句直接读取整个工作表,处理excel数据就跟数据库一样方便。

当然,这种方式也有不足:

1、excel表格必须只能有一行表头。

2、相对于Excel.Application,无法准确定位单元格。

3、工作表名相当于数据库表名,表头相当于字段名,所以excel格式必须的固定的,否则无法读取到数据

读取的代码如下:

//文件路径
QString filePath;
//桌面打开
//Qt4
//QString desktopDir=QDesktopServices::storageLocation(QDesktopServices::DesktopLocation);
//Qt 5
QString desktopDir=QStandardPaths::writableLocation(QStandardPaths::DesktopLocation);
filePath=QFileDialog::getOpenFileName(parent,"选择Excel",desktopDir,"*.xls");
if(filePath.isNull()){
error="无法打开excel文件";
return;
}
//读取excel
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC","excel");
if( !db.isValid())
{
error="数据库驱动异常";
return;
}

QString dsn = "DRIVER={Microsoft Excel Driver (*.xls)};"
"DSN='';DBQ="+filePath;
db.setDatabaseName(dsn); // open connection
if( !db.open())
{
error="无法打开数据库";
return;
}

QSqlQuery query(db);
QSqlRecord record;
QString tableName = "sheet1$"; //sheet名,$是必须的
QString sql="select * from ["+tableName+"]";

Qt通过odbc读取excel数据的更多相关文章

  1. 猜想-未做 利用office组件读取excel数据

    ---未实际使用过 用SQL-Server访问Office的Access和Excel http://blog.sina.com.cn/s/blog_964237ea0101532x.html 2007 ...

  2. java的poi技术读取Excel数据到MySQL

    这篇blog是介绍java中的poi技术读取Excel数据,然后保存到MySQL数据中. 你也可以在 : java的poi技术读取和导入Excel了解到写入Excel的方法信息 使用JXL技术可以在 ...

  3. .NET读取Excel数据,提示错误:未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序

    解决.NET读取Excel数据时,提示错误:未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序的操作: 1. 检查本机是否安装Office Access,如果未安装去去h ...

  4. oledbdataadapter 读取excel数据时,有的单元格内容不能读出

    表现:excel中某列中,有的单元格左上角有绿色箭头标志,有的没有,c#编写读取程序,但是只能读取出带绿色箭头的单元格中的内容,其余不带的读取不到内容 原因:excel中单元格因为是文本格式而存储了数 ...

  5. Openxml入门---Openxm读取Excel数据

    Openxml读取Excel数据: 有些问题,如果当Cell 里面是 日期和浮点型的话,对应的Cell.DataType==Null,对应的时间会转换为一个浮点型,对于这块可以通过DateTime.F ...

  6. C# 读取EXCEL数据

       /// <summary> /// 读取EXCEL数据 /// </summary> /// <param name="Path">< ...

  7. JAVA反射机制示例,读取excel数据映射到JAVA对象中

    import java.beans.PropertyDescriptor; import java.io.File; import java.io.FileInputStream; import ja ...

  8. Python读取Excel数据并根据列名取值

    一直想将自己接触到的东西梳理一遍,可就是迈不出第一步,希望从这篇总结开始不要再做行动的矮人了. 最近测试过程中需要用到python读取excel用例数据,于是去了解和学习了下xlrd库,这里只记录使用 ...

  9. jxl读写excel, poi读写excel,word, 读取Excel数据到MySQL

    这篇blog是介绍: 1. java中的poi技术读取Excel数据,然后保存到MySQL数据中. 2. jxl读写excel 你也可以在 : java的poi技术读取和导入Excel了解到写入Exc ...

随机推荐

  1. 头文件 .h 与源文件 .ccp 的区别

    .h 文件一般是用来定义的,比如定义函数.类.结构体等: .cpp 文件则是对头文件的定义进行实现. include .h文件,可以调用你声明的函数.类等.当然,比较简单的类.函数,你也可以直接在头文 ...

  2. MFC下的aero效果学习笔记

    最近想在MFC中用下aero 首先参考了 http://blog.csdn.net/polytechnic/article/details/5696797 中的一系列的步骤,进行了初步学习 但是对于其 ...

  3. JS小数位保留两位小数--toFixed()

    parseInt,parseFloat,parseDouble在JS中是将值转换成相应的类型: 你必须要这样,才能实现: <script>         alert(parseFloat ...

  4. Gora快速入门

    概述 Gora是apache的一个开源项目. The Apache Gora open source framework provides an in-memory data model and pe ...

  5. Java 中字符串的子串搜索

    基友前两天参加了阿里的实习生面试,问了个问题,就是关于字符串的子串搜索的问题.想想实现方式无非就是两层循环,但是 java 中是有现成实现的,于是我就去查查源码,看看 java 语言怎么实现这个的,发 ...

  6. tessnet2 在vs2010 及以上版本不能调用的解决方案

    <startup useLegacyV2RuntimeActivationPolicy="true"> <supportedRuntime version=&qu ...

  7. JMXMP SSL

    http://docs.oracle.com/javase/7/docs/technotes/guides/management/agent.html http://docs.oracle.com/c ...

  8. 这样就算会了PHP么?-10

    关于基本的文件读写内容: <?php echo "readfile function:<br>"; readfile("tm.txt"); e ...

  9. BIN和HEX文件的区别

    HEX文件和BIN文件是我们经常碰到的2种文件格式.下面简单介绍一下这2种文件格式的区别: 1.HEX文件是包括地址信息的,而BIN文件格式只包括了数据本身.在烧写或下载HEX文件的时候,一般都不需要 ...

  10. KEIL 程序定位

    用Keil做51的开发也4年多了,代码量基本上维持在5~10K左右,说大不大,说小也不小,也就是个中等货色.这段期间工作上难得有稍许的空间,潜心研究了一下keil中如何在 CODE中定位C程序的方法. ...