zoukankan      html  css  js  c++  java
  • python读取excel数据

      excel是很常用的表格工具。不过,对程序员来说,这可不是件好事件。因为excel的数据既不像txt那样,随意一种语言、脚本,写个函数就能把数据读出来分析。也不像JSON这种开源的数据格式,有N多的开源库来读取。就算没有,知道数据格式,自己写个库也自己用不至于太难。

      要想读取excel的数据,大多使用ODBC数据库驱动或者COM的方式。对于ODBC,不同的语言有不同的实现,如java的JDBC。而对于COM方式,几乎是在后台运行一个excel程序,像new Excel.Application(),相当于用自己的程序,去控制别人的程序。逻辑不是自己实现的,不能完全控制,总不大好。

      一开始我想用Qt通过ODBC驱动来读取。代码如下:

    QSqlDatabase db = QSqlDatabase::addDatabase("QODBC","excelexport");
    if( !db.isValid())
        return;   //! type error
    QString dsn = "DRIVER={Microsoft Excel Driver (*.xls)};"
         "DSN='';FIRSTROWHASNAMES=0;READONLY=FALSE;CREATE_DB="item.xls";DBQ=item.xls";
    db.setDatabaseName(dsn);
            // open connection
    if( !db.open())
        {
            qDebug()<<"error";
            return;  //! db error
        }
    qDebug()<<db.tables(QSql::AllTables);
    qDebug()<<db.tables(QSql::Tables);
    qDebug()<<db.tables(QSql::SystemTables);
    qDebug()<<db.tables(QSql::Views);

    测试文件item.xls里有item、award两个sheet,但是输出却如下:
    ("award$", "item$", "item$_")

    ()

    ()

    ()

    我一直没搞明白item$_这个表是怎么出现的。是我的参数不对,还是逻辑错误,还是本身Qt对Excel的数据库驱动有问题???知道的还请多多指教。

      Qt没做成功,后来找到了python。因为python有个开源(BSD License)的库xlrd(也许其他语言也有,只是我孤陋寡闻),专门读取excel数据。试了一下,感觉还很不错。

      下载python:https://www.python.org/

      下载xlrd:https://pypi.python.org/pypi/xlrd

      xlrd帮助文档:http://www.python-excel.org/

    基本代码一例(在帮助文档里该有的都有了,别告诉我说看不懂):

    from xlrd import open_workbook,cellname
    book = open_workbook('odd.xls')
    sheet = book.sheet_by_index(0)
    print sheet.name
    print sheet.nrows
    print sheet.ncols
    for row_index in range(sheet.nrows):
        for col_index in range(sheet.ncols):
            print cellname(row_index,col_index),'-',
            print sheet.cell(row_index,col_index).value

      其实在http://www.python-excel.org/上可以看到,xlrd、xlwt都属于xlutils,xlrd是读excel文件,xlwt是写excel文件。xlutils则是两都的合并。

  • 相关阅读:
    v:bind指令对于传boolean值的注意之处
    vue项目依赖的安装
    直接将文件存放到服务器tomcat中,就可以直接访问文件等
    什么情况下用vue.use方法
    创建Vue项目及其内容分析
    linux安装nginx以及如何启动,暂停,停止操作
    vue项目怎么搭建到云服务器上
    Nginx安装
    UNP学习笔记(第三十章 客户/服务器程序设计范式)
    UNP学习笔记(第二十六章 线程)
  • 原文地址:https://www.cnblogs.com/coding-my-life/p/3724475.html
Copyright © 2011-2022 走看看