網(wǎng)站首頁 編程語言 正文
一、前言
xlwt模塊是python中專門用于寫入Excel的拓展模塊,可以實(shí)現(xiàn)創(chuàng)建表單、寫入指定單元格、指定單元格樣式等人工實(shí)現(xiàn)的功能,一句話就是人使用excel實(shí)現(xiàn)的功能,這個(gè)擴(kuò)展包都可以實(shí)現(xiàn)。
二、基礎(chǔ)操作
1、創(chuàng)建workbook(創(chuàng)建excel)
#創(chuàng)建一個(gè)工作簿對(duì)象,設(shè)置編碼格式為“utf-8”,默認(rèn)格式是ASCII,為了方便寫入中文,一般都要設(shè)置成UTF-8
workBook = xlwt.Workbook(encoding='utf-8')
2、創(chuàng)建sheet表
# 通過工作薄對(duì)象創(chuàng)建sheet,sheetName 要求長(zhǎng)度小于31個(gè)字符,并且不能存在斜杠,否則會(huì)報(bào)錯(cuò)
sheet = workBook.add_sheet("sheetName")
3、寫入數(shù)據(jù)
#首先需要在第0行寫入表頭,然后再寫入后續(xù)數(shù)據(jù),但是都是使用的write方法寫入,只是坐標(biāo)不一樣
head = ['姓名','年齡','性別']
data = [['張三','19','男'],['劉雯雯','18','女']]
#循環(huán)寫入表頭
for i in head:
sheet.write(0,head.index(i),i)
#循環(huán)寫入數(shù)據(jù)
for i in range(len(data)):
for j in range(len(data[i])):
sheet.write(i+1,j,data[i][j])
4、保存workbook
# 通過workBook對(duì)象的save方法保存文檔,savePath可以是絕對(duì)路徑,也可以是相對(duì)了路徑
savePath = 'C:\\Users\\Administrator\\Desktop\\test.xls'
workBook.save(savePath)
上面的示例代碼綜合后如下:
import xlwt
workBook = xlwt.Workbook(encoding='utf-8')
sheet = workBook.add_sheet("sheetName")
head = ['姓名','年齡','性別']
data = [['張三','19','男'],['劉雯雯','18','女']]
for i in head:
sheet.write(0,head.index(i),i)
for i in range(len(data)):
for j in range(len(data[i])):
sheet.write(i+1,j,data[i][j])
savePath = 'C:\\Users\\Administrator\\Desktop\\test.xls'
workBook.save(savePath)
運(yùn)行效果如下:
三、樣式優(yōu)化
1、設(shè)置行列寬度
1)設(shè)置列的寬度
在表格之中行是按照數(shù)字來計(jì)算,列是按照英文字母順序來計(jì)算的。但是在xlwt庫中則是將它們都改成從0開始,類似于索引的對(duì)象獲取方式。調(diào)用sheet.col(0)就可以獲取到表格列對(duì)象,它表示的就是列A。然后設(shè)置width屬性值即可修改列寬,xlwt中默認(rèn)字體0的1/256為衡量單位。xlwt創(chuàng)建時(shí)使用的默認(rèn)寬度為2960,既11個(gè)字符0的寬度。
所以我們?cè)谠O(shè)置列寬時(shí)可以用如下方法:width = 256 * 20 256為衡量單位,20表示20個(gè)字符寬度。
示例代碼:
for i in range (len(head)):
sheet.col(i).width = 256*20
2)設(shè)置行的高度
行高的修改方式和列寬實(shí)際上是差不多的,使用row()方法并且傳入索引即可獲取到行對(duì)象。然后調(diào)用set_style()方法去設(shè)置行樣式。
示例代碼:
for i in range(len(data)):
sheet.row(i+1).set_style(xlwt.easyxf('font:height 512;')) #第0行為表頭,不修改
綜合操作結(jié)果:
2、設(shè)置文本居中
在xlwt中,需要使用Alignment來設(shè)置單元格的對(duì)齊方式,其中horz代表水平對(duì)齊方式,vert代表垂直對(duì)齊方式。
- VERT_TOP = 0x00 上端對(duì)齊
- VERT_CENTER = 0x01 居中對(duì)齊(垂直方向上)
- VERT_BOTTOM = 0x02 低端對(duì)齊
- HORZ_LEFT = 0x01 左端對(duì)齊
- HORZ_CENTER = 0x02 居中對(duì)齊(水平方向上)
- HORZ_RIGHT = 0x03 右端對(duì)齊
示例:
style = xlwt.XFStyle() # 創(chuàng)建一個(gè)樣式對(duì)象,初始化樣式
al = xlwt.Alignment()
al.horz = 0x02 # 設(shè)置水平居中
al.vert = 0x01 # 設(shè)置垂直居中
style.alignment = al
for i in range(len(data)):
for j in range(len(data[i])):
sheet.write(i+1, j, data[i][j], style)
測(cè)試效果:
3、設(shè)置邊框
xlwt要設(shè)置邊框,需要使用Borders來設(shè)置,可以設(shè)置實(shí)線、虛線、沒有邊框三種,并且可以通過colour屬性設(shè)置顏色。
- DASHED:虛線
- THIN:實(shí)線
- NO_LINE:沒有邊框
示例:
style = xlwt.XFStyle() # 創(chuàng)建一個(gè)樣式對(duì)象,初始化樣式
borders = xlwt.Borders()
#設(shè)置邊框?qū)傩詫?shí)線、黑色
borders.left = xlwt.Borders.THIN
borders.top = xlwt.Borders.THIN
borders.right = xlwt.Borders.THIN
borders.bottom = xlwt.Borders.THIN
borders.left_colour = 0xff
borders.right_colour = 0xff
borders.bottom_colour = 0xff
borders.top_colour = 0xff
style.borders = borders
for i in range(len(data)):
for j in range(len(data[i])):
sheet.write(i+1, j, data[i][j], style)
測(cè)試效果:
4、設(shè)置字體樣式
設(shè)置字體樣式,需要使用Font()來創(chuàng)建字體樣式。
示例:
style = xlwt.XFStyle() # 初始化樣式
font = xlwt.Font() # 為樣式創(chuàng)建字體
font.name = 'Times New Roman'
font.bold = True # 黑體
font.underline = True # 下劃線
font.italic = True # 斜體字
style.font = font # 設(shè)定樣式
測(cè)試效果:
5、綜合代碼
import xlwt
workBook = xlwt.Workbook(encoding='utf-8')
sheet = workBook.add_sheet("sheetName")
head = ['姓名', '年齡', '性別']
data = [['張三', '19', '男'], ['劉雯雯', '18', '女']]
for i in head:
sheet.write(0, head.index(i), i)
for i in range(len(head)):
sheet.col(i).width = 256*20
style = xlwt.XFStyle() # 創(chuàng)建一個(gè)樣式對(duì)象,初始化樣式
al = xlwt.Alignment()
borders = xlwt.Borders()
font = xlwt.Font()
#設(shè)置居中
al.horz = 0x02 # 設(shè)置水平居中
al.vert = 0x01 # 設(shè)置垂直居中
#設(shè)置邊框
borders.left = xlwt.Borders.THIN
borders.top = xlwt.Borders.THIN
borders.right = xlwt.Borders.THIN
borders.bottom = xlwt.Borders.THIN
borders.left_colour = 0xff
borders.right_colour = 0xff
borders.bottom_colour = 0xff
borders.top_colour = 0xff
# 設(shè)置字體樣式
font.name = 'Times New Roman'
font.bold = True # 黑體
font.underline = True # 下劃線
font.italic = True # 斜體字
# 設(shè)定樣式
style.font = font
style.alignment = al
style.borders = borders
# 寫入數(shù)據(jù)和樣式
for i in range(len(data)):
sheet.row(i+1).set_style(xlwt.easyxf('font:height 512;'))
for j in range(len(data[i])):
sheet.write(i+1, j, data[i][j], style)
# 保存工作薄
savePath = 'C:\\Users\\Administrator\\Desktop\\test.xls'
workBook.save(savePath)
原文鏈接:https://blog.csdn.net/qq_45590334/article/details/129158903
- 上一篇:沒有了
- 下一篇:沒有了
相關(guān)推薦
- 2022-03-08 C#中BackgroundWorker類用法總結(jié)_C#教程
- 2022-07-04 Android實(shí)現(xiàn)簡(jiǎn)單動(dòng)態(tài)搜索功能_Android
- 2023-10-30 解決docker拉取鏡像時(shí)報(bào)錯(cuò)Error response from daemon: Get ““:
- 2022-08-13 二分查找思路及模板
- 2022-02-10 C語言之初識(shí)指針_C 語言
- 2021-12-15 C語言數(shù)據(jù)結(jié)構(gòu)與算法之圖的遍歷(二)_C 語言
- 2023-04-06 Python中有哪些關(guān)鍵字及關(guān)鍵字的用法_python
- 2022-03-23 如何解決Mac中的Docker宿主機(jī)與容器無法通信(MacOS下解決宿主機(jī)和docker容器網(wǎng)絡(luò)互通
- 欄目分類
-
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支