本文實例講述了用python讀寫excel的方法。分享給大家供大家參考。具體如下:
最近需要從多個excel表里面用各種方式整理一些數據,雖然說原來用過java做這類事情,但是由于最近在學python,所以當然就決定用python嘗試一下了。發現python果然簡潔很多。這里簡單記錄一下。(由于是用到什么學什么,所以不算太深入,高手勿噴,歡迎指導)
一、讀excel表
讀excel要用到xlrd模塊,官網安裝(http://pypi.python.org/pypi/xlrd)。然后就可以跟著里面的例子稍微試一下就知道怎么用了。大概的流程是這樣的:
1、導入模塊
代碼如下:import xlrd
2、打開Excel文件讀取數據
代碼如下:data = xlrd.open_workbook('excel.xls')
3、獲取一個工作表
① table = data.sheets()[0] #通過索引順序獲取
② table = data.sheet_by_index(0) #通過索引順序獲取
③ table = data.sheet_by_name(u'Sheet1')#通過名稱獲取
4、獲取整行和整列的值(返回數組)
代碼如下:table.row_values(i)
table.col_values(i)
5、獲取行數和列數
代碼如下:table.nrows
table.ncols
6、獲取單元格
代碼如下:table.cell(0,0).value
table.cell(2,3).value
就我自己使用的時候覺得還是獲取cell最有用,這就相當于是給了你一個二維數組,余下你就可以想怎么干就怎么干了。得益于這個十分好用的庫代碼很是簡潔。但是還是有若干坑的存在導致話了一定時間探索。現在列出來供后人參考吧:
1、首先就是我的統計是根據姓名統計各個表中的信息的,但是調試發現不同的表中各個名字貌似不能夠匹配,開始懷疑過編碼問題,不過后來發現是因為 空格。因為在excel中輸入的時候很可能會順手在一些名字后面加上幾個空格或是tab鍵,這樣看起來沒什么差別,但是程序處理的時候這就是兩個完全 不同的串了。我的解決方法是給每個獲取的字符串都加上strip()處理一下。效果良好
2、還是字符串的匹配,在判斷某個單元格中的字符串(中文)是否等于我所給出的的時候發現無法匹配,并且各種unicode也不太奏效,百度過一些解決 方案,但是都比較復雜或是沒用。最后我采用了一個比較變通的方式:直接從excel中獲取我想要的值再進行比較,效果是不錯就是通用行不太好,個 呢不能問題還沒解決。
二、寫excel表
寫excel表要用到xlwt模塊,官網下載(http://pypi.python.org/pypi/xlwt)。大致使用流程如下:
1、導入模塊
代碼如下:import xlwt
2、創建workbook(其實就是excel,后來保存一下就行)
代碼如下:workbook = xlwt.Workbook(encoding = 'ascii')
3、創建表
代碼如下:worksheet = workbook.add_sheet('My Worksheet')
新聞熱點
疑難解答