前言:安装
pip install xlwings
xlwings 安装成功后,如果运行提示报错“ImportError: no module named win32api”,请再安装 pypiwin32 或者 pywin32 包;(pip install pypiwin32)
1、脚本:自动化/与Python的Excel交互
创建工作薄或打开现有工作簿
import xlwings as xw wb = xw.Book() # 这句创建一个新的工作薄 wb = xw.Book('FileName.xlsx') # 连接到当前工作目录中的现有文件 wb = xw.Book(r'C:path ofile.xlsx') # 在Windows上:使用原始字符r来避免反斜转义
如果打开了多个文件可以用下面的语句来获取对象:
xw.apps[0].books['FileName']
import xlwings as xw wb = xw.apps[0].books['工作簿1'] sht = wb.sheets[0]
实例化一个表对象:
sht = wb.sheets['Sheet1'] sht = wb.sheets[0]
非常容易的读取单元格的值,或将值写入单元格
sht.range("A1").value = "Foo1" #将值写入单元格 v = sht.range("A1").value #读取excel的值 print(v) #打印结果:Foo1
有许多方便的特性,例如:单元格范围扩展
sht.range('A1').value = [['Foo 1', 'Foo 2', 'Foo 3'], [10.0, 20.0, 30.0]] #将列表或元组中的数据写入单元格区域 sht.range('A1').value = [('Foo 1', 'Foo 2', 'Foo 3'), (10.0, 20.0, 30.0)] #将列表或元组中的数据写入单元格区域
sht.range('A1').value = [('Foo 1', 'Foo 2', 'Foo 3'), (10.0, 20.0, 30.0)] #将列表或元组中的数据写入单元格区域 v = sht.range('A1').expand().value #读取单元格A1所在的区域的值 print(v)
快捷操作活动单元格
如果您希望快速地与活动工作簿中的活动表对话,您不需要实例化工作簿和表单对象,但可以简单的按下面代码做:
import xlwings as xw xw.Range("a1").value = 'Foo1' #一定注意这个Range是大写开头的,而实例话对象的是小写的 v = xw.Range("A1").value
2、宏命令:从Excel中调用Python
1)在vba中调用python首先要安装插件,在Windows中打开CMD命令行输入:xlwings addin install
2)安装成功后,在VBA编辑窗口,菜单栏中的工具——引用,然后选择 xlwings
可以使用RunPython函数从VBA调用Python函数。
Sub HelloWorld() RunPython ("import hello; hello.world()") End Sub
在默认情况下,RunPython期望.py文件与Excel文件在相同的目录中。通过使用xw.Book.caller来获取工作簿对象。
# hello.py #import numpy as np import xlwings as xw def world(): wb = xw.Book.caller() wb.sheets[0].range('A1').value = 'Hello World!'
3、自定义函数:用户自定义函数(只限Windows)
写一个用户自定义函数是很简单的:
import xlwings as xw @xw.func def hello(name): return 'Hello {0}'.format(name)
要求excel表格的名字必须和.py的名字相同才能导入,否则会报错