码迷,mamicode.com
首页 > 编程语言 > 详细

python读取excel数据

时间:2014-05-13 17:31:43      阅读:332      评论:0      收藏:0      [点我收藏+]

标签:style   blog   class   code   java   c   

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

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

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

bubuko.com,布布扣
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);
bubuko.com,布布扣

测试文件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/

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

bubuko.com,布布扣
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
bubuko.com,布布扣

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

python读取excel数据,布布扣,bubuko.com

python读取excel数据

标签:style   blog   class   code   java   c   

原文地址:http://www.cnblogs.com/coding-my-life/p/3724475.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!