Python玩轉(zhuǎn)Excel的讀寫改實(shí)例
摘要:
- 利用xlrd讀取excel
- 利用xlwt寫excel
- 利用xlutils修改excel
利用xlrd讀取excel
先需要在命令行中pip install xlrd;讀取xls文件的流程為:
加載文件->選中第幾個(gè)表格->按先行后列的順序讀
通用demo
import xlrd filename = "test.xls" #文件路徑 wb = xlrd.open_workbook(filename) #加載這個(gè)xls文件 sh = wb.sheet_by_index(0) #選中第1個(gè)表格 rows = sh.nrows #rows為該表格的行數(shù) for i in range(1,rows): #從第二行開始按行讀取 title = sh.cell(i,0).value #取第i+1行,第1列的數(shù)據(jù)
diy功能
根據(jù)列名獲取內(nèi)容的函數(shù)
def get_col_index(name,workbook,sheet):
for i in range(sheet.ncols):
name2 = sheet.cell(0,i).value
print(name2)
if name2 == name:
return i
return -1
sheet.cell(1,get_col_index("創(chuàng)建時(shí)間")).value
再拓展一點(diǎn):
sh = wb.sheet_by_name(sheetname) #通過(guò)表格名稱選中表格 print(wb.sheet_names()) #打印該xls文件的所有表格名稱 sh.row(i) #獲得第i+1行的所有數(shù)據(jù)組成的list ncols = sh.ncols #獲得該表格的所有列數(shù) sh.row_values(rowx, start_colx=0, end_colx=None) #獲取第rowx+1行的某幾列的數(shù)據(jù)并組成的list sh.col(colx, start_rowx=0, end_rowx=None) #獲取第colx+1列的某幾行的數(shù)據(jù)并組成的list sh.cell(i,j).value #獲取第i+1行第j+1列的數(shù)據(jù) sh.cell(i,j).ctype #獲取第i+1行第j+1列的數(shù)據(jù)類型
注意date類型
說(shuō)起數(shù)據(jù)類型,補(bǔ)充一點(diǎn),xlrd讀取xls文件單元格的數(shù)據(jù)類型有五種,數(shù)字與類型的對(duì)應(yīng)關(guān)系為:
ctype : 0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error
當(dāng)單元格某個(gè)值為date類型時(shí),不加處理輸出的是一個(gè)浮點(diǎn)數(shù),此時(shí)需要判斷ctype并進(jìn)行一次轉(zhuǎn)換:
from xlrd import xldate_as_tuple cell = sh.cell(i,10).ctype if cell.ctype == 3: date = datetime(*xldate_as_tuple(cell.value, 0))
利用xlwt寫exce
先需要在命令行中pip install xlwt;寫xls文件的流程為:
加載文件->選中第幾個(gè)表格->按先行后列的順序讀
通用demo
import xlwt
file = xlwt.Workbook() #新建個(gè)文件
sheet = file.add_sheet('test_sheet0',cell_overwrite_ok=True) #新建個(gè)表格,指定表名以及是否可覆蓋寫
sheet.write(i,j,value) #在第i+1行和第j+1列寫value(i、j從0開始)
file.save("test_xls.xls") #保存成xls文件并指定文件名
更多功能
#設(shè)置某列的寬度
sheet.col(0).width = 200
#寫日期
style = xlwt.XFStyle()
style.num_format_str = 'D-MMM-YY'
worksheet.write(0, 0, datetime.datetime.now(), style)
#寫公式
sheet.write(1, 1, xlwt.Formula('SUM(A1,B1)'))
#合并單元格的寫
sheet.write_merge(0, 0, 0, 3, 'First Merge')
#ps:
#write_merge(x, x + h, y, w + y, value, sytle) x和y表示當(dāng)前行列,h和w為要合并的行數(shù)和列數(shù)
更炫酷一點(diǎn)
既然是寫,何不來(lái)點(diǎn)style:
style = xlwt.XFStyle() #修改字體: font = xlwt.Font() #為樣式創(chuàng)建字體 font.name = 'Times New Roman' #字體名稱 font.bold = True #黑體 font.colour_index = 2 #修改字的顏色 font.underline = True #下劃線 style.font = font #使用到樣式中 sheet.write(0,1,"編號(hào)",style) #修改單元格背景色 pattern = xlwt.Pattern() pattern.pattern = xlwt.Pattern.SOLID_PATTERN pattern.pattern_fore_colour = 5 #色號(hào),可以在源代碼中看到色號(hào)和顏色的對(duì)應(yīng)關(guān)系 style = xlwt.XFStyle() style.pattern = pattern sheet.write(0,2,"編號(hào)",style)
利用xlutils修改excel
修改excel文件的流程為:
將xlrd加載的xls文件(xlrd對(duì)象)復(fù)制為xlwt對(duì)象,然后用xlwt對(duì)象操作excel
demo
import xlrd import pymysql from xlrd import open_workbook from xlutils.copy import copy import xlwt file_name = "test_update.xls" workbook = xlrd.open_workbook(file_name) sheet = wb.sheet_by_index(0) workbook_update = copy(workbook) sheet_update = workbook_update.get_sheet(0) sheet_update.write(i,j,value) workbook_update.save(file_name)
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接
相關(guān)文章
python使用socket進(jìn)行簡(jiǎn)單網(wǎng)絡(luò)連接的方法
這篇文章主要介紹了python使用socket進(jìn)行簡(jiǎn)單網(wǎng)絡(luò)連接的方法,實(shí)例分析了Python使用socket的基本技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-04-04
python 統(tǒng)計(jì)代碼行數(shù)簡(jiǎn)單實(shí)例
這篇文章主要介紹了python 統(tǒng)計(jì)代碼行數(shù)簡(jiǎn)單實(shí)例的相關(guān)資料,需要的朋友可以參考下2017-05-05
如何查看Django ORM執(zhí)行的SQL語(yǔ)句的實(shí)現(xiàn)
這篇文章主要介紹了如何查看Django ORM執(zhí)行的SQL語(yǔ)句的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04
Python導(dǎo)入數(shù)值型Excel數(shù)據(jù)并生成矩陣操作
這篇文章主要介紹了Python導(dǎo)入數(shù)值型Excel數(shù)據(jù)并生成矩陣操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-06-06
Python實(shí)現(xiàn)元素等待代碼實(shí)例
這篇文章主要介紹了python實(shí)現(xiàn)元素等待代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11
Python中關(guān)鍵字nonlocal和global的聲明與解析
這篇文章主要給大家介紹了關(guān)于Python中關(guān)鍵字nonlocal和global的聲明與解析的相關(guān)資料,文中介紹的非常詳細(xì),相信對(duì)大家具有一定的參考價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-03-03
Python的對(duì)象傳遞與Copy函數(shù)使用詳解
今天小編就為大家分享一篇Python的對(duì)象傳遞與Copy函數(shù)使用詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-12-12
python base64庫(kù)給用戶名或密碼加密的流程
這篇文章主要介紹了python base64庫(kù)給用戶名或密碼加密,需要的朋友可以參考下2020-01-01
Python實(shí)現(xiàn)購(gòu)物程序思路及代碼
本文給大家分享的是使用Python實(shí)現(xiàn)的購(gòu)物小程序的思路要求以及相關(guān)代碼,非常的簡(jiǎn)單實(shí)用,有需要的小伙伴可以參考下2017-07-07

