插上翅膀,让Excel飞起来——xlwings(二)
在上一篇插上翅膀,让Excel飞起来——xlwings(一)中提到利用xlwings模块,用python操作Excel有如下的优点:
- xlwings能够非常方便的读写Excel文件中的数据,并且能够进行单元格格式的修改
- 可以和matplotlib以及pandas无缝连接
- 可以调用Excel文件中VBA写好的程序,也可以让VBA调用用Python写的程序。
- 开源免费,一直在更新
本文紧接着上文介绍了xlwings模块一些常用的api
![](http://upload-images.jianshu.io/upload_images/2979196-89d95b50b4a69d4f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
xlwings基本对象
常用函数和方法
- Book 工作簿常用的api
wb=xw.books[‘工作簿名称']- wb.activate()激活为当前工作簿
- wb.fullname 返回工作簿的绝对路径
- wb.name 返回工作簿的名称
- wb.save(path=None) 保存工作簿,默认路径为工作簿原路径,若未保存则为脚本所在的路径
-wb. close() 关闭工作簿
代码例子:# 引用Excel程序中,当前的工作簿 wb=xw.books.acitve # 返回工作簿的绝对路径 x=wb.fullname # 返回工作簿的名称 x=wb.name # 保存工作簿,默认路径为工作簿原路径,若未保存则为脚本所在的路径 x=wb.save(path=None) # 关闭工作簿 x=wb.close()
- sheet 常用的api
# 引用某指定sheet sht=xw.books['工作簿名称'].sheets['sheet的名称'] # 激活sheet为活动工作表 sht.activate() # 清除sheet的内容和格式 sht.clear() # 清除sheet的内容 sht.contents() # 获取sheet的名称 sht.name # 删除sheet sht.delete
- range常用的api
# 引用当前活动工作表的单元格 rng=xw.Range('A1') # 加入超链接 # rng.add_hyperlink(r'www.baidu.com','百度',‘提示:点击即链接到百度') # 取得当前range的地址 rng.address rng.get_address() # 清除range的内容 rng.clear_contents() # 清除格式和内容 rng.clear() # 取得range的背景色,以元组形式返回RGB值 rng.color # 设置range的颜色 rng.color=(255,255,255) # 清除range的背景色 rng.color=None # 获得range的第一列列标 rng.column # 返回range中单元格的数据 rng.count # 返回current_region rng.current_region # 返回ctrl + 方向 rng.end('down') # 获取公式或者输入公式 rng.formula='=SUM(B1:B5)' # 数组公式 rng.formula_array # 获得单元格的绝对地址 rng.get_address(row_absolute=True, column_absolute=True,include_sheetname=False, external=False) # 获得列宽 rng.column_width # 返回range的总宽度 rng.width # 获得range的超链接 rng.hyperlink # 获得range中右下角最后一个单元格 rng.last_cell # range平移 rng.offset(row_offset=0,column_offset=0) #range进行resize改变range的大小 rng.resize(row_size=None,column_size=None) # range的第一行行标 rng.row # 行的高度,所有行一样高返回行高,不一样返回None rng.row_height # 返回range的总高度 rng.height # 返回range的行数和列数 rng.shape # 返回range所在的sheet rng.sheet #返回range的所有行 rng.rows # range的第一行 rng.rows[0] # range的总行数 rng.rows.count # 返回range的所有列 rng.columns # 返回range的第一列 rng.columns[0] # 返回range的列数 rng.columns.count # 所有range的大小自适应 rng.autofit() # 所有列宽度自适应 rng.columns.autofit() # 所有行宽度自适应 rng.rows.autofit()
- books 工作簿集合的api
# 新建工作簿 xw.books.add() # 引用当前活动工作簿 xw.books.active
- sheets 工作表的集合
# 新建工作表 xw.sheets.add(name=None,before=None,after=None) # 引用当前活动sheet xw.sheets.active
实例
大Z老师,教了小z同学怎么用python操作Excel之后,利用第一篇和第二篇的知识,编写了一个python小脚本,给小Z同学演示了一下怎么用python调整单元格的行宽、列宽和背景色,做一些Interesting的事。
![](http://upload-images.jianshu.io/upload_images/2979196-6617d22defb14e2a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
大Z老师的作品.png
小Z同学在看了这么cliche但是好玩的东西之后,自己果断地修改了代码,改变了单元格的颜色,并在sheet里面进行了题字,然后,便有新的作品:
![](http://upload-images.jianshu.io/upload_images/2979196-a1a5011dd2410a59.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
小z的作品.png
下一课有机会教小z同学,利用python自带的time模块,让Excel中静态的画和字动起来,成为像gif一样的图片。
参考资料:
xlwings官方文档
作者:LuckyFrog
链接:http://www.jianshu.com/p/b534e0d465f7
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。