1. 程式人生 > >Python中xlrd模組使用

Python中xlrd模組使用

安裝xlrd

該模組需要自行安裝,直接使用pip安裝就能安裝

簡單使用

測試使用的表格
在這裡插入圖片描述

1、開啟表格檔案並獲取所有sheet名稱
>>> rb = xlrd.open_workbook(r'E:\py-test\tests.xls')
>>> rb.sheet_names()
[u'Sheet1', u'Sheet2', u'Sheet3']
2、獲取需要開啟的sheet
>>> rb.sheet_names()[0]
u'Sheet1'
>>> rb.sheet_by_index(0)
<xlrd.sheet.Sheet object at 0x000000000447D390>
>>> rb.sheet_by_name('Sheet1')
<xlrd.sheet.Sheet object at 0x000000000447D390>
>>> 
3、獲取行數、列數及名稱
>>> sheet1 = rb.sheet_by_name('Sheet1')
>>> sheet1.nrows
11
>>> sheet1.ncols
5
>>> sheet1.name
u'Sheet1'
>>> 
4、讀取一行、列的值
>>> sheet1.row(0)
[text:u'cz9025', text:u'B1', text:u'C1', xldate:43421.0]
>>> sheet1.row_values(0)
[u'cz9025', u'B1', u'C1', 43421.0]
>>> sheet1.col(0)
[text:u'cz9025', text:u'A2', text:u'A3', text:u'A4', text:u'A5', text:u'A6', text:u'A7', text:u'A8', text:u'A9', text:u'A10', text:u'A11']
>>> sheet1.col_values(0)
[u'cz9025', u'A2', u'A3', u'A4', u'A5', u'A6', u'A7', u'A8', u'A9', u'A10', u'A11']
>>> 
5、獲取指定單元格的值
>>> sheet1.cell(0, 0).value
u'cz9025'
>>> sheet1.cell_value(0, 0)
u'cz9025'
>>> sheet1.row(0)[0]
text:u'cz9025'
>>> sheet1.row(0)[0].value
u'cz9025'
>>> 
6、單元格型別

ctype 型別值說明: 0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error

>>> sheet1.cell(0, 0).ctype
1
7、獲取日期型別的格式

獲取表格中的日期 ,先判斷是否為日期,否的話會報錯

>>> if sheet1.cell(0, 3).ctype == 3:
        date_value = xlrd.xldate_as_tuple(sheet1.cell_value(0, 3), rb.datemode)
        print u'日期=>', date(*date_value[:3])
        print u'格式化日期=>:', date(*date_value[:3]).strftime('%Y/%m/%d')
        dates = xlrd.xldate_as_datetime(sheet1.cell_value(0, 3), rb.datemode)
        print dates.date()

        
日期=> 2018-11-17
格式化日期=>: 2018/11/17
2018-11-17
>>> 
8、獲取合併單元格的內容

merged_cells返回的這四個引數的含義是:(row,row_range,col,col_range),其中[row,row_range)包括row,不包括row_range,col也是一樣,下標從0開始。這裡,需要在讀取檔案的時候添加個引數,將formatting_info引數設定為True,預設是False,否則可能呼叫merged_cells方法獲取到的是空值。

>>> workbook = xlrd.open_workbook(r'E:\Py-Test-Script\py-test\user.xls', formatting_info=True)
>>> sheet2 = workbook.sheet_by_name('Sheet1')
>>> print sheet2.merged_cells
[(1, 3, 3, 5), (4, 7, 3, 4)]
>>> merg = []
>>> for lrow, lrow_range, rcol, rcol_range in sheet2.merged_cells:
        merg.append([lrow, rcol])
        print sheet2.cell_value(lrow, rcol)

        
合併D2-E3
合併D5-D7
>>> 

合併行單元格讀取行的第一個索引,合併列單元格讀取列的第一個索引

>>> sheet1.cell(1, 3).value
u'\u5408\u5e76D2-E3'