閱讀983 返回首頁    go 阿裏雲 go 技術社區[雲棲]


Python使用xlrd和xlwt讀寫Excel的簡單用法

前言
數據處理是 Python 的一大應用場景,而 Excel 則是最流行的數據處理軟件。因此用 Python 進行數據相關的工作時,難免要和 Excel 打交道。

標準的 Excel 文件(xls/xlsx)具有較複雜的格式,並不方便像普通文本文件一樣直接進行讀寫,需要借助第三方庫來實現。

常用的庫是 python-excel 係列:

xlrd、xlwt、xlutils

xlrd - 讀取 Excel 文件
xlwt - 寫入 Excel 文件
xlutils - 操作 Excel 文件的實用工具,如複製、分割、篩選等
它們有個缺陷,就是隻能處理 xls 文件。如果你想用新版本的 xlsx,可以考慮 openpyxl 和 xlsxwriter。

庫的安裝
如果你隻是裝了Python的話,你需要分別安裝xlrd、xlwt、xlutils,安裝方式看個人情況,為了方便,建議安裝pip包,這樣安裝很簡單,直接pip install 包名。如果你安裝了集成環境,比如anaconda,我已安裝,已經有了 xlrd 和 xlwt,所以我隻需要再安裝xlutils即可。

分析Excel文件的層級對象
要讀取excel的數據,就要了解excel的結構,根據excel的結構一層一層的去讀取數據。

excel有三層級對象,workbook,sheet,和cell。一個excel文件就是一個workbook,所以在最初我們必須要打開這個excel文件,也就是workbook。sheet我們都很熟悉,就是表,我們都知道一個excel文件有時候會有很多的表,所以我們必須要選擇是讀取哪個表的數據,最後才是cell,cell其實就是格子,excel的表格就是一個二維數組,cell就是這個表格中的最小單元,也就是我們讀取數據存儲的地方。

xlrd庫的使用
更多內容,參考鏈接:

https://xlrd.readthedocs.io/en/latest/

https://xlrd.readthedocs.io/en/latest/api.html

基礎數據如下所示:

首先讀取ad.xlsx表中的數據。先看一下代碼:

-*- coding:utf-8 -*-

import xlrd

打開xlsx文件

ad_wb = xlrd.open_workbook("ad.xlsx")

獲取第一張表的名稱

row_data = ad_wb.sheets()[0]
print ("表單數量:", ad_wb.nsheets)
print ("表單名稱:", ad_wb.sheet_names())

獲取第一個目標表單

sheet_0 = ad_wb.sheet_by_index(0)
print (u"表單 %s 共 %d 行 %d 列" % (sheet_0.name, sheet_0.nrows, sheet_0.ncols))
print ("第三行第三列:", sheet_0.cell_value(2, 2))

直接輸出日期

date_value = xlrd.xldate_as_tuple(sheet_0.cell_value(2,2),ad_wb.datemode)
date1 = xlrd.xldate.xldate_as_datetime(sheet_0.cell_value(2, 2), ad_wb.datemode)
print (date_value)#元組
print (date1)#日期

遍曆所有表單,由於數據量大 ,這裏隻取前10條

for s in ad_wb.sheets():
for r in range(0, 10):
# 輸出指定行
print (s.row(r))
輸出結果:

可以看到,上麵的日期,已經被轉換成了Excel的日期,這裏是以數字類型展示的。

因為這裏 xldate 有自己的格式定義。如果要使用正確的格式,必須轉換:

new_date= xlrd.xldate.xldate_as_datetime(date, book.datemode)
date 是對應單元格的數據,book 是打開的文件對象。

可以看到我重新輸出了日期結果(具體見代碼)。

另外,在打開文件時,加上參數 formatting_info=True,可以保證在時間數據在 copy 時保持原樣。

寫入時間數據,則可通過此方法創建 excel 的時間對象:

xlrd.xldate.xldate_from_datetime_tuple
或者通過 xlwt.easyxf 指定時間格式:

style = xlwt.easyxf(num_format_str='D-MMM-YY')
ws.write(1, 0, datetime.now(), style)
xlrd常用的方法:

· open_workbook 打開文件

· sheet_by_index 獲取某一個表單

· sheets 獲取所有表單

· cell_value 獲取指定單元格的數據

xlwt庫的使用
先看一個示例代碼:

-*-coding:utf-8 -*-

import xlwt

創建xls文件對象

wb = xlwt.Workbook()

新建表單

sh = wb.add_sheet('A new sheet')

按位置添加數據,前麵兩個參數是位置,後麵一個是單元格內容

sh.write(0, 0, 'hello')
sh.write(1, 0, 'world')
sh.write(2, 0, 1234567)
sh.write(2, 1, '2017-04-10')

保存文件

wb.save('xlwt_test.xls')
生成的文件如下所示:

小結
上麵就是今天的主題內容了,今天分享下如何使用Python操作Excel進行讀寫文件,這對於經常處理相同格式的表格有很大幫助。希望通過上麵的操作能幫助大家。如果你有什麼好的意見,建議,或者有不同的看法,我都希望你留言和我們進行交流、討論。

最後更新:2017-04-11 09:00:00

  上一篇:go 準確率(Accuracy), 精確率(Precision), 召回率(Recall)和F1-Measure
  下一篇:go Linux 壓縮(打包)文件夾 tar/zip