1. 程式人生 > >使用Python對EXCEL表格進行處理

使用Python對EXCEL表格進行處理

前言

用到的模組

import xlrd #用來讀取excel檔案,不能修改資料
import xlwt #建立Excel檔案並對其進行操作,但不能對已有的Excel檔案進行修改
import xlutils #對已有的Excel檔案進行修改

模組的安裝
筆者使用anaconda來管理python的各個包,因此要安裝可以直接在命令列介面中使用如下程式碼

conda install xlrd
conda install xlwt
conda install xlutils

當然,也可以使用pip安裝或者直接去官網找package安裝包
分析excel檔案的層級物件
要讀取excel的資料,就要了解excel的結構,根據excel的結構一層一層的去讀取資料。

excel有三層級物件,workbooksheet,和cell。一個excel檔案就是一個workbook,所以在最初我們必須要開啟這個excel檔案,也就是workbook。sheet我們都很熟悉,就是表,我們都知道一個excel檔案有時候會有很多的表,所以我們必須要選擇是讀取哪個表的資料,最後才是cell,cell其實就是格子,excel的表格就是一個二維陣列,cell就是這個表格中的最小單元,也就是我們讀取資料儲存的地方。

xlrd部分

開啟Excel檔案讀取內容

workbook= xlrd.open_workbook('excelFile.xls')

抓取所有sheet頁的名稱

worksheets = workbook.sheet_names()

獲取工作表

table = workbook.sheets()[0]          #通過索引順序獲取
table = workbook.sheet_by_index(0)    #通過索引順序獲取
table = workbook.sheet_by_name(u'Sheet1') #通過名稱獲取

獲取整行和整列的值(陣列)

table.row_values(i)
table.col_values(i)

獲取行數和列數

nrows = table.nrows
ncols = table.ncols

讀取單元格資料

cell_A2 = table.cell(0,1).value
cell_A2 = table.cell_value(0,1)
cell_A2 = table.row(0)[1].value #使用行索引
cell_A2 = table.col(1)[0].value #使用列索引

獲取單元格中值的型別

cell_type = table.cell_type(rown,coln)

xlwt部分

建立workbook和sheet物件

workbook = xlwt.Workbook(encoding = 'ascii') #注意Workbook的開頭W要大寫
sheet1 = workbook.add_sheet('sheet1',cell_overwrite_ok=True)
sheet2 = workbook.add_sheet('sheet2',cell_overwrite_ok=True)

向sheet頁中寫入資料

sheet1.write(0,0,'this should overwrite1')
sheet1.write(0,1,'1111111111111111')
sheet2.write(0,0,'this should overwrite2')
sheet2.write(1,2,'2222222222222222')

使用樣式

#初始化樣式
style = xlwt.XFStyle() 
#為樣式建立字型
font = xlwt.Font()
font.name = 'Times New Roman'
font.bold = True
#設定樣式的字型
style.font = font
#使用樣式
sheet.write(0,1,'some bold Times text',style)

儲存該excel檔案,有同名檔案時直接覆蓋

workbook.save('E:\\Code\\Python\\test2.xls')

xlutils部分

開啟一個workbook

readbook = xlrd.open_workbook('test.xls') 
workbook= xlutils.copy.copy(readbook)

獲取sheet物件,通過sheet_by_index()獲取的sheet物件沒有write()方法

writesheet= workbook.get_sheet(0)

寫入資料

writesheet.write(1, 1, 'changed!')

新增sheet頁

workbook.add_sheet('sheetnnn2',cell_overwrite_ok=True)

儲存該Excel檔案,利用儲存時同名覆蓋達到修改excel檔案的目的,注意未被修改的內容保持不變

workbook.save('test.xls')