xlwings是 Python 的一个第三方库并且开源免费。它能够非常方便的读写Excel文件中的数据,并且能够进行单元格格式的修改。它还可以和matplotlib、numpy以及pandas无缝连接,支持读写numpy、pandas的数据类型,将matplotlib可视化图表导入到excel中。最重要的是xlwings可以调用Excel文件中VBA写好的程序,也可以让VBA调用用Python写的程序。

安装

pip install xlwings

导入

import xlwings as xw

使用

首先了解excel大致操作,首先打开excel,打开excel中选择其中的一个sheet,在sheet中操作单元格。

表相关

新建xlwings app

app = xw.App(visible=False,add_book=False) # 在打开app时,后台打开

打开excel表格

book = app.books.open("./test.xlsx")

保存表格

book.save()

实例化sheet表对象

sheet = book.sheets["sheet1"]

查看excel绝对路径

book.fullname

查看sheet表的名字

sheet.name

单元格相关

数据相关

在单元格中写入数据

sheet.range('A1').value = "xlwings"

读取单元格内容

sheet.range('A1').value

清除单元格内容和格式

sheet.range('A1').clear()

获取单元格的列标

sheet.range('A1').column

获取单元格的行标

sheet.range('A1').row

在单元格中写入批量数据,只需要指定其单元格位置即可

sheet.range('A2').value = [['Foo 1', 'Foo 2', 'Foo 3'], [10.0, 20.0, 30.0]]

读取表中批量数据

sheet.range('A1').expand().value
sheet['A1'].expand().value

直接与电脑里的活动表格进行交互

# 写入
xw.Range("E1").value = "xlwings"
# 读取
xw.Range("E1").value

格式相关

获取单元格的行高

sheet.range('A1').row_height
sheet['A1'].row_height

获取单元格的列宽

sheet.range('A1').column_width
sheet['A1'].column_width

整一列的列宽自适应

sheet.range('A1').columns.autofit()
sheet['A1'].columns.autofit()

整一行的行高自适应

sheet.range('A1').rows.autofit()
sheet['A1'].rows.autofit()

给单元格上背景色,传入RGB值

sheet.range('A1').color = (34,139,34)
sheet['A1'].color = (34,139,34)

获取单元格颜色,RGB值

sheet.range('A1').color
sheet['A1'].color

清除单元格颜色

sheet.range('A1').color = None
sheet['A1'].color = None

公式相关

输入公式,相应单元格会出现计算结果

sheet.range('A1').formula = '=SUM(B6:B7)'
sheet['A1'].formula = '=SUM(B6:B7)'

获取单元格公式

sheet.range('A1').formula_array
sheet['A1'].formula_array

与pandas互动

xlwings可以和pandas一起操作,使用options对插入的dataframe进行设置

sheet['A1'].options(pd.DataFrame, index=False, header=False, expand='table').value = df

上面的配置会把索引和表头关闭,在对应单元格传入dataframe时,会以改单元格为始输入数据表。就和在excel中复制数据表,然后在另外一个表点击某个单元格后粘贴的操作一致。

文章作者: Vsoapmac
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 soap的会员制餐厅
数据分析 python 第三方库 个人分享 数据分析
喜欢就支持一下吧