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";
python怎么读入excel
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 数据。试了⼀下,感觉还很不错。
基本代码⼀例(在帮助⽂档⾥该有的都有了,别告诉我说看不懂):
from xlrd import open_workbook,cellname
book = open_workbook('odd.xls')
sheet = book.sheet_by_index(0)
print sheet.name
ws
ls
for row_index in ws):
for col_index in ls):
print cellname(row_index,col_index),'-',
ll(row_index,col_index).value

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。