Pandas的read_excel()与to_excel()实际上就是读写有格式的文本文件,操作excel文件和操作text、csv文件没有区别,Excel文件只是用来储存数据。但除了操作数据,其实我们还可以利用Python调整Excel文件的表格宽度、字体颜色等。
遇见 xlwings
xlwings是一个Python库,它使Python的一些数据分析特性可以在Excel实例中使用,包括对numpy数组、pandas Series和DataFrame的支持。与其他任何Python库一样,我们可以使用pip或conda等常用方法来安装它,但是如果您需要更多详细信息,您可以在这里访问xlwings的文档。(地址:https://docs.xlwings.org/en/stable/installation.html )
xlwings的特色
- xlwings能够非常方便的读写Excel文件中的数据,并且能够进行单元格格式的修改
- 可以和matplotlib以及pandas无缝连接
- 可以调用Excel文件中VBA写好的程序,也可以让VBA调用用Python写的程序。
- 开源免费,一直在更新
xlwings的安装
如果安装了Anaconda,而且Python版本为3.5或3.5以上,那么恭喜你xlwings就已经可用了。
conda install xlwings
xlwings的使用
- xlwings 打开-新建
import time
import xlwings as xw
"""
visible
Ture:可见excel
False:不可见excel
add_book
True:打开excel并且新建工作簿
False:不新建工作簿
"""
app = xw.App(visible=True, add_book=False)
wb = app.books.open('./a.xlsx')
wb2 = app.books.open("./b.xlsx")
# 打印当前活跃的books-<Book [b.xlsx]>
print(app.books.active)
# 打印当前的book-Books([<Book [a.xlsx]>, <Book [b.xlsx]>])
print(app.books)
wb.save()
# 关闭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)
# 添加一个新的工作薄
wb = app.books.add()
# 保存文件
wb.save('./c.xlsx')
wb.close()
app.quit()
- xlwings sheet操作
#新建sheet
wb.sheets.add("sheet2")
#删除sheet
wb.sheets["sheet2"].delete()
#查看当前表格名
wb.sheets[1].name
#清空整张表格的内容和格式
wb.sheets[1].clear()
# 查看当前活跃的sheet
wb.sheets.active
sh = wb.sheets.active
sh.range("A1").value="A1"
# 激活指定的sheet
wb.sheets["sheet1"].activate()
- xlwings 操作数据
引用单元格
单个单元格写入数据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 待输入-见下面示例 # A1 单元格 wb.sheets["sheet1"].range("A1") # A2 单元格 sht.range("A2") # A3单元格-xw-当前活跃的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()
输入多个数据到行sht.range("A1").value="A1"
输入多个数据到列sht.range("A2").value=[1,2] # 在A2输入1,B2输入2
输入表格sht.range("A3").options(transpose=True).value = ["A", "B", "C"]
xlwings 读取数据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
网友评论