您好,登錄后才能下訂單哦!
一、概述
Python操作excel的三個(gè)工具包如下,注意,只能操作.xls,不能操作.xlsx。
xlrd: 對(duì)excel進(jìn)行讀相關(guān)操作
xlwt: 對(duì)excel進(jìn)行寫相關(guān)操作
xlutils: 對(duì)excel讀寫操作的整合
這三個(gè)工具包都可以直接使用pip進(jìn)行下載:
sudo pip install xlrdsudo
pip install xlwtsudo
pip install xlutils
二、使用xlrd模塊讀取已有的excel文件內(nèi)容
xlrd是用來從一個(gè)excel文件中讀取內(nèi)容的模塊
代碼如下:
導(dǎo)入 import xlrd 打開excel data = xlrd.open_workbook('demo.xls') #注意這里的workbook首字母是小寫 查看文件中包含sheet的名稱 data.sheet_names() 得到第一個(gè)工作表,或者通過索引順序 或 工作表名稱 table = data.sheets()[0] table = data.sheet_by_index(0) table = data.sheet_by_name(u'Sheet1') 獲取行數(shù)和列數(shù) nrows = table.nrows ncols = table.ncols 獲取整行和整列的值(數(shù)組) table.row_values(i) table.col_values(i) 循環(huán)行,得到索引的列表 for rownum in range(table.nrows): print table.row_values(rownum) 單元格 cell_A1 = table.cell(0,0).value cell_C4 = table.cell(2,3).value 分別使用行列索引 cell_A1 = table.row(0)[0].value cell_A2 = table.col(1)[0].value 簡(jiǎn)單的寫入 row = 0 col = 0 ctype = 1 # 類型 0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error value = 'lixiaoluo' xf = 0 # 擴(kuò)展的格式化 (默認(rèn)是0) table.put_cell(row, col, ctype, value, xf) table.cell(0,0) # 文本:u'xxxx' table.cell(0,0).value # 'yyyy' |
三、使用xlwd模塊寫內(nèi)容保存到新的excel文件中
xlwt只能創(chuàng)建一個(gè)全新的excel文件,然后對(duì)這個(gè)文件進(jìn)行寫入內(nèi)容以及保存。但是大多數(shù)情況下我們希望的是讀入一個(gè)excel文件,然后進(jìn)行修改或追加,這個(gè)時(shí)候就需要xlutils了。
代碼如下:
導(dǎo)入xlwt import xlwt 新建一個(gè)excel文件 file = xlwt.Workbook() #注意這里的Workbook首字母是大寫,無語吧 新建一個(gè)sheet table = file.add_sheet('sheet name') 寫入數(shù)據(jù)table.write(行,列,value) table.write(0,0,'test') 如果對(duì)一個(gè)單元格重復(fù)操作,會(huì)引發(fā) returns error:# Exception: Attempt to overwrite cell:# sheetname=u'sheet 1' rowx=0 colx=0所以在打開時(shí)加cell_overwrite_ok=True解決 table = file.add_sheet('sheet name',cell_overwrite_ok=True) 保存文件 file.save('demo.xls') 另外,使用style style = xlwt.XFStyle() #初始化樣式 font = xlwt.Font() #為樣式創(chuàng)建字體 font.name = 'Times New Roman' font.bold = True style.font = font #為樣式設(shè)置字體 table.write(0, 0, 'some bold Times text', style) # 使用樣式 |
四、使用xlutils模塊追加寫入內(nèi)容到已有的excel文件中(新內(nèi)容追加到已有內(nèi)容里面)
代碼如下:
# -*- coding: cp936 -*- import xlwt; import xlrd; #import xlutils; from xlutils.copy import copy; import xlrd #用xlrd提供的方法讀取一個(gè)已經(jīng)存在的excel文件,使用"formatting_info=True"保持源文件格式不變 rexcel = xlrd.open_workbook("file.xls",formatting_info=True) #用wlrd提供的方法獲得現(xiàn)在已有的行數(shù) rows = rexcel.sheets()[0].nrows #cols = rexcel.sheets()[0].ncols #用xlutils提供的copy方法將xlrd的對(duì)象轉(zhuǎn)化為xlwt的對(duì)象 excel = copy(rexcel) #用xlwt對(duì)象的方法獲得要操作的excel中的表名(sheet),0表示第一張表,1表示第二張表。 table = excel.get_sheet(0) values = ['1','2','3'] row = rows print row for value in values: # xlwt對(duì)象的寫方法,參數(shù)分別是行、列、值 table.write(row,0,value) table.write(row,1,"haha") table.write(row,2,"lala") row+=1 # xlwt對(duì)象的保存方法,這時(shí)便覆蓋掉了原來的excel excel.save("file.xls") |
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。