xlwings,让excel飞起来!

朱卫军

公众号:pydatas,更多技术文章

https://zhuanlan.zhihu.com/p/82783751

excel已经成为必不可少的数据处理软件,几乎天天在用。python有很多支持操作excel的第三方库,xlwings是其中一个。

关于xlwings

xlwings开源免费,能够非常方便的读写Excel文件中的数据,并且能够进行单元格格式的修改。

xlwings还可以和matplotlib、numpy以及pandas无缝连接,支持读写numpy、pandas数据类型,将matplotlib可视化图表导入到excel中。

最重要的是xlwings可以调用Excel文件中VBA写好的程序,也可以让VBA调用用Python写的程序。

话不多说,我们开始练一练吧!

xlwings安装和导入

本文python版本为3.6,系统环境为windows,在jupyter notebook中进行实验。
xlwings库使用pip安装:

pip install xlwings

xlwings导入:

import xlwings as xw

xlwings实操

  • 建立excel表连接
wb = xw.Book("e:\example.xlsx")
  • 实例化工作表对象
sht = wb.sheets["sheet1"]
  • 返回工作表绝对路径
wb.fullname
  • 返回工作簿的名字
sht.name
  • 在单元格中写入数据
sht.range('A1').value = "xlwings"
  • 读取单元格内容
sht.range('A1').value
  • 清除单元格内容和格式
sht.range('A1').clear()
  • 获取单元格的列标
sht.range('A1').column
  • 获取单元格的行标
sht.range('A1').row
  • 获取单元格的行高
sht.range('A1').row_height
  • 获取单元格的列宽
sht.range('A1').column_width
  • 列宽自适应
sht.range('A1').columns.autofit()
  • 行高自适应
sht.range('A1').rows.autofit()
  • 给单元格上背景色,传入RGB值
sht.range('A1').color = (34,139,34)
  • 获取单元格颜色,RGB值
sht.range('A1').color
  • 清除单元格颜色
sht.range('A1').color = None
  • 输入公式,相应单元格会出现计算结果
sht.range('A1').formula='=SUM(B6:B7)'
  • 获取单元格公式
sht.range('A1').formula_array
  • 在单元格中写入批量数据,只需要指定其实单元格位置即可
sht.range('A2').value = [['Foo 1', 'Foo 2', 'Foo 3'], [10.0, 20.0, 30.0]]
  • 读取表中批量数据,使用expand()方法
sht.range('A2').expand().value
  • 其实你也可以不指定工作表的地址,直接与电脑里的活动表格进行交互
# 写入
xw.Range("E1").value = "xlwings"# 读取
xw.Range("E1").value

xlwings与numpy、pandas、matplotlib互动

  • 支持写入numpy array数据类型
import numpy as np
np_data = np.array((1,2,3))
sht.range('F1').value = np_data
  • 支持将pandas DataFrame数据类型写入excel
import pandas as pd
df = pd.DataFrame([[1,2], [3,4]], columns=['a', 'b'])
sht.range('A5').value = df
  • 将数据读取,输出类型为DataFrame
sht.range('A5').options(pd.DataFrame,expand='table').value
  • 将matplotlib图表写入到excel表格里
import matplotlib.pyplot as plt
%matplotlib inline
fig = plt.figure()
plt.plot([1, 2, 3, 4, 5])
sht.pictures.add(fig, name='MyPlot', update=True)

xlwings与VBA互相调用

xlwings与VBA的配合非常完美,你可以在python中调用VBA,也可以在VBA中使用python编程,这些通过xlwings都可以巧妙实现。这里不对该内容做详细讲解,感兴趣的童鞋可以去xlwings官网学习。

总结

xlwings操作excel语法简单,功能强大,又很好结合了pandas、numpy、matplotlib等分析库,非常适合奔波于python和excel之间的童鞋,让你更轻松地分析数据!

更多Python操作excel可以看我的Live

xlwings,让excel飞起来!相关推荐

  1. 用python让excel 飞起来(数据处理与分析操作)

    本文来自<超简单:用Python让Excel飞起来> Excel能完成一般办公中绝大多数的数据分析工作,但是当数据量大.数据表格多时,可借助Python中功能丰富而强大的第三方模块来提高工 ...

  2. Python让Excel飞起来—批量进行数据分析

    目录 案例01 批量升序排序一个工作簿中的所有工作表 举一反三 批量排序多个工作簿中的数据 案例02 筛选一个工作簿中的所有工作表数据 举一反三 在一个工作簿中筛选单一类别数据 案例03 对多个工作簿 ...

  3. 用python让excel飞起来(第7章 图表操作)

    本文来自<超简单 利用python让excel飞起来> 121 制作柱形图(方法一) 柱形图通常用于直观地对比数据,在实际工作中使用频率很高.在Python中,可使用Matplotlib模 ...

  4. Python让Excel飞起来—批量处理行、列和单元格

    目录 案例01 精确调整多个工作簿的行高和列宽 举一反三 精确调整一个工作簿中所有工作表的行高和列宽 案例02 批量更改多个工作簿的数据格式 举一反三 批量更改多个工作簿的外观格式 案例03 批量替换 ...

  5. 用python让excel飞起来(第5章 单元格操作)

    本文来源于 <超简单用python让Excel飞起来> 在Excel中,行和列都是由一个个单元格组成的.因此,学习完行和列的操作,就需要接着学习单元格的操作.本章将详细介绍如何通过Pyth ...

  6. python 用 xlwings 处理 Excel 中的重复数据

    xlwings 简介 xlwings 是一个 Python 库.简化了 Python 和 Excel 通信. xlwings - 让Excel跑得飞快! 本文写作背景 & 需求 & 方 ...

  7. 用python让excel飞起来(行/列操作)

    本文内容来源于<超简单:用Python让Excel飞起来实战150例> Excel的工作表是由行和列组成的,因此,学习完工作表的操作,就需要接着学习行和列的操作.本章将详细介绍如何使用Py ...

  8. excel python插件_利用 Python 插件 xlwings 读写 Excel

    Python 通过 xlwings 读取 Excel 数据 去年底公司让我做设备管理,多次委婉拒绝,最终还是做了.其实我比较喜欢技术.做管理后发现现场没有停机率统计,而原始数据有,每次要自己在Exce ...

  9. python xlwings追加数据_大数据分析Python库xlwings提升Excel工作效率教程

    原标题:大数据分析Python库xlwings提升Excel工作效率教程 Excel在当今的企业中非常非常普遍.在AAA教育,我们通常建议出于很多原因使用代码,并且我们的许多数据科学课程旨在教授数据分 ...

  10. 利用 Python 插件 xlwings 读写 Excel

    Python 通过 xlwings 读取 Excel 数据 去年底公司让我做设备管理,多次委婉拒绝,最终还是做了.其实我比较喜欢技术.做管理后发现现场没有停机率统计,而原始数据有,每次要自己在Exce ...

最新文章

  1. zabbix监控规划及实施
  2. 每天一道LeetCode-----找到由连续数字组成的数组中缺失的那个连续值
  3. open source project for recommendation system
  4. E. Beautiful Subarrays(思维 01 trie 树)
  5. python中序列(列表list和元组tuple)的用法
  6. 微信小程序之:小程序接入高德地图SDK
  7. php模拟表单提交,php用fsockopen()函数实现模拟提交表单。
  8. 怎么找回计算机用户名密码怎么办,电脑steam账号密码忘记了怎么办|电脑找回steam账户的方法...
  9. android 卡片消息,安卓QNotified 支持xml卡片QQ消息 - 陌路人博客
  10. 时间序列——深圳人口预测
  11. 持续集成在Hexo自动化部署上的实践
  12. 三菱M80操作介绍_CIMT2019 展品预览:三菱电机以“智能制造 价值创造”为主题参展...
  13. iOS开发中extension的用法(延展)
  14. 【数据结构与算法】起始篇
  15. iOS 扫描二维码/条形码
  16. 网狐卓越版本内核引擎、卓越内核(源码,源码,源码)
  17. 【Android】Android源码下载
  18. 上海亚商投顾:沪指逼近3300点 电力、光伏持续强势
  19. 明日开幕|第四届OpenI/O启智开发者大会
  20. 交换机串行损耗解决之预加重

热门文章

  1. shell中encoding=utf-8_如何在Linux中将文件转换为UTF-8编码
  2. css3制作俩面翻转盒子效果
  3. 最受开发人员欢迎的JDBC接口
  4. 解决docker push镜像到docker hub报没有权限
  5. MySQL:动态开启慢查询日志(Slow Query Log)
  6. 【操作系统/OS笔记13】信号量、PV操作、管程、条件变量、生产者消费者问题
  7. 没有安装opencv的linux系统上运行基于opencv,Linux环境下安装OpenCV
  8. Eclipse环境安装Python插件PyDev
  9. 29_海星资讯9月29日报
  10. hal库开启中断关中断_STM32 HAL库学习系列第9篇---NVIC按键外部中断函数