Pandas的read_excel()與to_excel()實(shí)際上就是讀寫(xiě)有格式的文本文件蚂夕,操作excel文件和操作text、csv文件沒(méi)有區(qū)別濒蒋,Excel文件只是用來(lái)儲(chǔ)存數(shù)據(jù)。但除了操作數(shù)據(jù),其實(shí)我們還可以利用Python調(diào)整Excel文件的表格寬度蹦掐、字體顏色等。
遇見(jiàn) xlwings
xlwings是一個(gè)Python庫(kù)僵闯,它使Python的一些數(shù)據(jù)分析特性可以在Excel實(shí)例中使用卧抗,包括對(duì)numpy數(shù)組、pandas Series和DataFrame的支持棍厂。與其他任何Python庫(kù)一樣颗味,我們可以使用pip或conda等常用方法來(lái)安裝它,但是如果您需要更多詳細(xì)信息牺弹,您可以在這里訪(fǎng)問(wèn)xlwings的文檔浦马。(地址:https://docs.xlwings.org/en/stable/installation.html )
xlwings的特色
- xlwings能夠非常方便的讀寫(xiě)Excel文件中的數(shù)據(jù),并且能夠進(jìn)行單元格格式的修改
- 可以和matplotlib以及pandas無(wú)縫連接
- 可以調(diào)用Excel文件中VBA寫(xiě)好的程序张漂,也可以讓VBA調(diào)用用Python寫(xiě)的程序晶默。
- 開(kāi)源免費(fèi),一直在更新
xlwings的安裝
如果安裝了Anaconda航攒,而且Python版本為3.5或3.5以上磺陡,那么恭喜你xlwings就已經(jīng)可用了。
conda install xlwings
xlwings的使用
- xlwings 打開(kāi)-新建
import time
import xlwings as xw
"""
visible
Ture:可見(jiàn)excel
False:不可見(jiàn)excel
add_book
True:打開(kāi)excel并且新建工作簿
False:不新建工作簿
"""
app = xw.App(visible=True, add_book=False)
wb = app.books.open('./a.xlsx')
wb2 = app.books.open("./b.xlsx")
# 打印當(dāng)前活躍的books-<Book [b.xlsx]>
print(app.books.active)
# 打印當(dāng)前的book-Books([<Book [a.xlsx]>, <Book [b.xlsx]>])
print(app.books)
wb.save()
# 關(guān)閉a.xlsx文件-指定操作的excel
# wb.close()
app.books[0].close()
time.sleep(3)
app.quit()
- 新建excel文件
import xlwings as xw
app = xw.App(visible=True, add_book=False)
# 添加一個(gè)新的工作薄
wb = app.books.add()
# 保存文件
wb.save('./c.xlsx')
wb.close()
app.quit()
- xlwings sheet操作
#新建sheet
wb.sheets.add("sheet2")
#刪除sheet
wb.sheets["sheet2"].delete()
#查看當(dāng)前表格名
wb.sheets[1].name
#清空整張表格的內(nèi)容和格式
wb.sheets[1].clear()
# 查看當(dāng)前活躍的sheet
wb.sheets.active
sh = wb.sheets.active
sh.range("A1").value="A1"
# 激活指定的sheet
wb.sheets["sheet1"].activate()
- xlwings 操作數(shù)據(jù)
引用單元格
單個(gè)單元格寫(xiě)入數(shù)據(jù)import xlwings as xw import time app = xw.App(visible=True, add_book=False) wb = app.books.open("./a.xlsx") sht = wb.sheets["sheet1"] # TODO 待輸入-見(jiàn)下面示例 # A1 單元格 wb.sheets["sheet1"].range("A1") # A2 單元格 sht.range("A2") # A3單元格-xw-當(dāng)前活躍的app-book-sheet xw.Range("A3") # A4單元格 rng_a4 = sht["A4"] # A1:B3 單元格 rng_a1_b3 = sht["A1:B3"] rng_a1_b3_2 = sht.range("A1:B3") xw.Range((1, 1), (3, 2)) # C1單元格 rng_c1 = sht[0, 2] time.sleep(3) wb.save() wb.close() app.quit()
輸入多個(gè)數(shù)據(jù)到行sht.range("A1").value="A1"
輸入多個(gè)數(shù)據(jù)到列sht.range("A2").value=[1,2] # 在A(yíng)2輸入1,B2輸入2
輸入表格sht.range("A3").options(transpose=True).value = ["A", "B", "C"]
xlwings 讀取數(shù)據(jù)sht.range('A4').options(expand='table').value = [[1, 2], [3, 4]] sht.range("A4:B5").value = [[1, 2], [3, 4]]
sht.range("A1").value sht.range("A1:A3").value sht.range("A1:B3").value xw.Range("A1").value