使用Python對EXCEL表格進行處理
阿新 • • 發佈:2019-01-11
前言
用到的模組
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有三層級物件,workbook,sheet,和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')