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則是兩都的合並。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM