在上一篇插上翅膀,讓Excel飛起來——xlwings(一)中提到利用xlwings模塊,用python操作Excel有如下的優(yōu)點(diǎn):
- xlwings能夠非常方便的讀寫Excel文件中的數(shù)據(jù),并且能夠進(jìn)行單元格格式的修改
- 可以和matplotlib以及pandas無縫連接
- 可以調(diào)用Excel文件中VBA寫好的程序,也可以讓VBA調(diào)用用Python寫的程序。
- 開源免費(fèi),一直在更新
本文緊接著上文介紹了xlwings模塊一些常用的api
xlwings基本對(duì)象
常用函數(shù)和方法
- Book 工作簿常用的api
wb=xw.books[‘工作簿名稱']- wb.activate()激活為當(dāng)前工作簿
- wb.fullname 返回工作簿的絕對(duì)路徑
- wb.name 返回工作簿的名稱
- wb.save(path=None) 保存工作簿,默認(rèn)路徑為工作簿原路徑,若未保存則為腳本所在的路徑
-wb. close() 關(guān)閉工作簿
代碼例子:
# 引用Excel程序中,當(dāng)前的工作簿
wb=xw.books.acitve
# 返回工作簿的絕對(duì)路徑
x=wb.fullname
# 返回工作簿的名稱
x=wb.name
# 保存工作簿,默認(rèn)路徑為工作簿原路徑,若未保存則為腳本所在的路徑
x=wb.save(path=None)
# 關(guān)閉工作簿
x=wb.close()
- sheet 常用的api
# 引用某指定sheet
sht=xw.books['工作簿名稱'].sheets['sheet的名稱']
# 激活sheet為活動(dòng)工作表
sht.activate()
# 清除sheet的內(nèi)容和格式
sht.clear()
# 清除sheet的內(nèi)容
sht.contents()
# 獲取sheet的名稱
sht.name
# 刪除sheet
sht.delete - range常用的api
# 引用當(dāng)前活動(dòng)工作表的單元格
rng=xw.Range('A1')
# 加入超鏈接
# rng.add_hyperlink(r'www.baidu.com','百度',‘提示:點(diǎn)擊即鏈接到百度')
# 取得當(dāng)前range的地址
rng.address
rng.get_address()
# 清除range的內(nèi)容
rng.clear_contents()
# 清除格式和內(nèi)容
rng.clear()
# 取得range的背景色,以元組形式返回RGB值
rng.color
# 設(shè)置range的顏色
rng.color=(255,255,255)
# 清除range的背景色
rng.color=None
# 獲得range的第一列列標(biāo)
rng.column
# 返回range中單元格的數(shù)據(jù)
rng.count
# 返回current_region
rng.current_region
# 返回ctrl + 方向
rng.end('down')
# 獲取公式或者輸入公式
rng.formula='=SUM(B1:B5)'
# 數(shù)組公式
rng.formula_array
# 獲得單元格的絕對(duì)地址
rng.get_address(row_absolute=True, column_absolute=True,include_sheetname=False, external=False)
# 獲得列寬
rng.column_width
# 返回range的總寬度
rng.width
# 獲得range的超鏈接
rng.hyperlink
# 獲得range中右下角最后一個(gè)單元格
rng.last_cell
# range平移
rng.offset(row_offset=0,column_offset=0)
#range進(jìn)行resize改變r(jià)ange的大小
rng.resize(row_size=None,column_size=None)
# range的第一行行標(biāo)
rng.row
# 行的高度,所有行一樣高返回行高,不一樣返回None
rng.row_height
# 返回range的總高度
rng.height
# 返回range的行數(shù)和列數(shù)
rng.shape
# 返回range所在的sheet
rng.sheet
#返回range的所有行
rng.rows
# range的第一行
rng.rows[0]
# range的總行數(shù)
rng.rows.count
# 返回range的所有列
rng.columns
# 返回range的第一列
rng.columns[0]
# 返回range的列數(shù)
rng.columns.count
# 所有range的大小自適應(yīng)
rng.autofit()
# 所有列寬度自適應(yīng)
rng.columns.autofit()
# 所有行寬度自適應(yīng)
rng.rows.autofit() - books 工作簿集合的api
# 新建工作簿
xw.books.add()
# 引用當(dāng)前活動(dòng)工作簿
xw.books.active - sheets 工作表的集合
# 新建工作表
xw.sheets.add(name=None,before=None,after=None)
# 引用當(dāng)前活動(dòng)sheet
xw.sheets.active
實(shí)例
大Z老師,教了小z同學(xué)怎么用python操作Excel之后,利用第一篇和第二篇的知識(shí),編寫了一個(gè)python小腳本,給小Z同學(xué)演示了一下怎么用python調(diào)整單元格的行寬、列寬和背景色,做一些Interesting的事。
大Z老師的作品.png
小Z同學(xué)在看了這么cliche但是好玩的東西之后,自己果斷地修改了代碼,改變了單元格的顏色,并在sheet里面進(jìn)行了題字,然后,便有新的作品:
小z的作品.png
下一課有機(jī)會(huì)教小z同學(xué),利用python自帶的time模塊,讓Excel中靜態(tài)的畫和字動(dòng)起來,成為像gif一樣的圖片。
參考資料:
xlwings官方文檔