传统的读取方式是通过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+"]";

最新文章

  1. 基础知识(05) -- Java中的类
  2. ubuntu下文件内容查找命令
  3. ural 1143. Electric Path
  4. plot bar chart using python
  5. C++ Primer : 第十二章 : 动态内存之allocator类
  6. NFC手机
  7. eclipse,tomcat部署web项目,以及本地文件访问
  8. C# partial修饰符_分部类_分部方法
  9. docker 学习手冊-中文版下载
  10. RPC模式的Hub操作
  11. flash Ane
  12. Leetcode_35_Search Insert Position
  13. hadoop 数据倾斜
  14. MVC架构中的Repository模式 个人理解
  15. androidstudio上传代码到git上
  16. 100-days: twenty-nine
  17. Matplotlib学习---用seaborn画矩阵图(pair plot)
  18. Confluence 6 安全概述和建议概述
  19. 导出表结构sql语句
  20. HDU 1535 Invitation Cards(逆向思维+邻接表+优先队列的Dijkstra算法)

热门文章

  1. C#拖动自己的定义标题栏(panel)以及实现窗体拖动关闭和最小化
  2. volatile举列说明const
  3. linux上安装apache以及httpd.conf基本配置
  4. mac/unix系统:C++实现一个端口扫描器
  5. Effective Java2读书笔记-类和接口(五)
  6. php读取文件的各种方法
  7. ET 与RETI 基于51单片机中断跳出指令“RETI”浅议
  8. C语言开发CGI程序的简单例子
  9. 查看当前发行版可以使用的shell
  10. c++ 13