我們之前已經(jīng)學(xué)習(xí)了xlrd這個(gè)庫(kù),這個(gè)庫(kù)是讀取excel表格內(nèi)信息的考婴,它并不能寫(xiě)入信息赤嚼,這時(shí)候我們需要使用xlwt3這個(gè)庫(kù)進(jìn)行excel表格的寫(xiě)入。
安裝
打開(kāi)命令提示符辅髓,使用pip進(jìn)行安裝
pip install xlwt3
安裝完后進(jìn)入下一步:
這個(gè)xlwt3的庫(kù)泣崩,好像已經(jīng)很久沒(méi)有人維護(hù)了,所以有一個(gè)問(wèn)題就是洛口,你用pip安裝的這個(gè)庫(kù)矫付,是有點(diǎn)問(wèn)題的,需要咱們手動(dòng)修改第焰。
打開(kāi)python的安裝目錄买优,就是你的python的安裝位置,我的在D盤(pán)挺举,找到D:\Python34\Lib\site-packages\xlwt3\formula.py這個(gè)文件杀赢,右鍵點(diǎn)擊,使用IDLE打開(kāi)
將其中的
__slots__ = ["__init__", "__s", "__parser", "__sheet_refs", "__xcall_refs"]
修改為
__slots__ = [ "__s", "__parser", "__sheet_refs", "__xcall_refs"]
就是把第一個(gè)"__init__
"刪掉湘纵。
保存脂崔,關(guān)閉。
打開(kāi)python shell
使用import xlwt3
梧喷,看看報(bào)不報(bào)錯(cuò)砌左,沒(méi)有報(bào)錯(cuò)說(shuō)明修改成功。安裝完成伤柄。
使用
1. 創(chuàng)建工作簿
我們使用這個(gè)包主要是為了生成excel表格绊困,將我們處理好的數(shù)據(jù)存到excel表格中文搂。
為此适刀,我們需要的是xlwt3里面的Workbook這個(gè)類(lèi)。
先創(chuàng)建實(shí)例:
import xlwt3
file = xlwt3.Workbook()
這樣就創(chuàng)建完了一個(gè)實(shí)例煤蹭。
2.創(chuàng)建工作表
我們知道笔喉,一個(gè).xlsx文件或.xls文件稱(chēng)為一個(gè)工作簿,里面有好幾張工作表硝皂,我們現(xiàn)在創(chuàng)建的這個(gè)Workbook()實(shí)例常挚,它也是一個(gè)工作簿,我們要寫(xiě)入內(nèi)容的話是要寫(xiě)進(jìn)工作表里面的稽物,這就需要我們創(chuàng)建一個(gè)工作表奄毡,工作表名是'test1'。
table = file.add_sheet('test1',cell_overwrite_ok = True)
使用的是Workbook下屬的add_sheet方法贝或,add_sheet吼过,新建工作表锐秦。
add_sheet(self, sheetname, cell_overwrite_ok=False)
需要注意的是,這個(gè)方法有兩個(gè)參數(shù)
· 第一個(gè)是sheetname盗忱,這個(gè)是工作表的名字酱床,必須要設(shè)置的
· 另一個(gè)參數(shù)是cell_overwrite_ok,這個(gè)參數(shù)是覆寫(xiě)的意思趟佃,默認(rèn)是False扇谣,如果你現(xiàn)在要寫(xiě)的單元格里面,已經(jīng)有內(nèi)容了闲昭,就不能寫(xiě)了罐寨,如果你要是寫(xiě)的話會(huì)報(bào)錯(cuò)的。當(dāng)然序矩,我們?cè)谑褂玫臅r(shí)候衩茸,最好是設(shè)置成True。也就是上面的那個(gè)寫(xiě)法贮泞。這樣對(duì)同一個(gè)單元格寫(xiě)入兩次的話就不會(huì)報(bào)錯(cuò)了楞慈,當(dāng)然,只會(huì)保留最后一次寫(xiě)入的值啃擦。
3.寫(xiě)入信息
接下來(lái)可以寫(xiě)入信息了囊蓝。
事實(shí)上,我們剛才使用add_sheet這個(gè)方法后令蛉,創(chuàng)建出了一個(gè)Worksheet類(lèi)的實(shí)例聚霜。這個(gè)類(lèi)有兩個(gè)方法是我們需要使用的,一個(gè)是write珠叔,另一個(gè)是write_merge蝎宇。前者用來(lái)寫(xiě)入一個(gè)單元格的內(nèi)容,后者用來(lái)寫(xiě)入一個(gè)合并單元格的內(nèi)容祷安。
table.write_merge(0,0,0,2,'Student information')
table.write(1,0,'number')
table.write(1,1,'name')
table.write(1,2,'score')
write(self, r, c, label=b'', style=<xlwt3.style.XFStyle object at 0x00000000037D6358>)
我們先看write方法姥芥,里面有四個(gè)參數(shù),分別是r汇鞭,c凉唐,label,style霍骄,
· r是行
· c是列
· label是內(nèi)容
· style是格式
上面寫(xiě)的table.write(1,0,'number')
是在第二行的第一列寫(xiě)入'number'這個(gè)字符串台囱。
同理,另外兩句分別是在第二行的第二列和第二行的第三列寫(xiě)入'name'和'score'這兩個(gè)字符串读整。
write_merge(self, r1, r2, c1, c2, label=b'', style=<xlwt3.style.XFStyle object at 0x00000000037D6358>)
write_merge是寫(xiě)合并單元格的方法
· r1是最上面的單元格所在的行數(shù)
· r2是最下面的單元格所在的行數(shù)
· c1是最左面的單元格所在的列數(shù)
· c2是最右面的單元格所在的列數(shù)
· label是要寫(xiě)入的內(nèi)容
· style是格式
上面那個(gè)table.write_merge(0,0,0,2,'Student information')
簿训,是把第0行的第一列,第二列,第三列的單元格合并了强品,在里面寫(xiě)入'Student information'這個(gè)字符串豺总。
如果我們寫(xiě)入信息的時(shí)候,不加style這個(gè)參數(shù)择懂,那么里面的信息就是最普通的喻喳,沒(méi)有什么格式,顏色啊困曙,粗體啊表伦,邊框啊,什么的慷丽。
在xlwt3中蹦哼,使用easyxf這個(gè)函數(shù)來(lái)設(shè)置單元格屬性。
titlestyle = xlwt3.easyxf('font: bold on, italic on, name 宋體, height 400, color red; align: vert centre, horiz centre; borders: top THIN,left THIN,right THIN,bottom THIN')
比如這句當(dāng)中要糊,我們可以看到傳入了一個(gè)字符串作為參數(shù):
'font: bold on, italic on, name 宋體, height 400, color red; align: vert centre, horiz centre; borders: top THIN,left THIN,right THIN,bottom THIN'
分解來(lái)看纲熏,這個(gè)字符串有三部分:
font:字體
· bold on: 設(shè)置成粗體
· italic on: 設(shè)置成斜體
· name 宋體: 字體設(shè)置成宋體
· height 400: 字號(hào)20
· color red: 字體紅色align:對(duì)齊
· vert centre: 垂直居中
· horiz centre: 水平居中borders:邊框
· top THIN: 上邊框細(xì)線
· left THIN: 左邊框細(xì)線
· right THIN: 右邊框細(xì)線
· bottom THIN: 底邊框細(xì)線
我們剛才不是用
titlestyle = xlwt3.easyxf('font: bold on, italic on, name 宋體, height 400, color red; align: vert centre, horiz centre; borders: top THIN,left THIN,right THIN,bottom THIN')
創(chuàng)建了一個(gè)單元格屬性嗎,紅色20號(hào)宋體锄俄,粗體局劲,斜體,四周有邊框奶赠,居中鱼填。
寫(xiě)入的使用加在作為style參數(shù)傳入。
table.write_merge(0,0,0,2,'Student information',titlestyle)
table.write(1,0,'number')
table.write(1,1,'name')
table.write(1,2,'score')
這樣毅戈,我們就成功的設(shè)置單元格格式了苹丸。
接下來(lái)我們?cè)O(shè)置列寬。
table.col(0).width = 5293
使用這個(gè)方法就能設(shè)置列寬了苇经,里面的0代表第一列赘理,列寬是20。我也不知道這個(gè)列寬是怎么換算的扇单,只要設(shè)置5293的話就是20商模,大家可以根據(jù)換算設(shè)置自己想要的列寬。
4. 保存
最后一步令花,保存我們建立的工作簿阻桅。
file.save('D:\\test_excel.xls')
這里面就一個(gè)參數(shù),你要保存的excel表格的文件名兼都。需要加路徑和后綴名的。需要注意的是稽寒,這個(gè)xlwt3只能保存成.xls的excel文件扮碧。
打開(kāi)我們保存的excel表格。
可以看到,工作表名是我們?cè)O(shè)置的test1慎王,第一行的前三個(gè)單元格合并了蚓土,內(nèi)容是'Student information',紅色20號(hào)宋體赖淤,粗體蜀漆,斜體,四周有邊框咱旱,居中确丢。第二行分別是number,name吐限,score鲜侥。
file = xlwt3.Workbook()
table = file.add_sheet('test1',cell_overwrite_ok = True)
titlestyle = xlwt3.easyxf('font: bold on, italic on, name 宋體, height 400, color red; align: vert centre, horiz centre; borders: top THIN,left THIN,right THIN,bottom THIN')
table.write_merge(0,0,0,2,'Student information',titlestyle)
table.write(1,0,'number')
table.write(1,1,'name')
table.write(1,2,'score')
table.col(0).width = 5293
file.save('D:\\test_excel.xls')
以上就是創(chuàng)建這個(gè)excel表格的流程。
剛才上pypi發(fā)現(xiàn)诸典,這個(gè)包好像就要被移除了描函,這樣的話以后用pip就無(wú)法安裝了。
xlwt3 0.1.2 : Python Package Index
可以看到它在11年就停止更新了狐粱。推薦我們?nèi)ナ褂?a target="_blank" rel="nofollow">xlwt-future舀寓。
我們可以使用
pip install xlwt-future
來(lái)安裝,不知道好不好使肌蜻。
不過(guò)基公,這兩個(gè)包都只支持.xls格式,不支持保存為.xlsx格式宋欺,所以這兩個(gè)包以后勢(shì)必會(huì)被淘汰掉的轰豆。大家可以找找,看看有沒(méi)有其他更好的包齿诞,之前在知乎上看別人推薦過(guò)PyXLL酸休,這個(gè)也是處理excel的,可以免費(fèi)試用30天祷杈,之后就得付費(fèi)了斑司。
PyXLL: Excel functions written in Python
以上就是關(guān)于xlwt3這個(gè)包的簡(jiǎn)單教程。