美文网首页VBA For ExcelExcel使用技巧Excel 加油站
插上翅膀,让Excel飞起来——xlwings(二)

插上翅膀,让Excel飞起来——xlwings(二)

作者: 早起收果子 | 来源:发表于2017-01-01 00:28 被阅读6919次

在上一篇插上翅膀,让Excel飞起来——xlwings(一)中提到利用xlwings模块,用python操作Excel有如下的优点:

  • xlwings能够非常方便的读写Excel文件中的数据,并且能够进行单元格格式的修改
  • 可以和matplotlib以及pandas无缝连接
  • 可以调用Excel文件中VBA写好的程序,也可以让VBA调用用Python写的程序。
  • 开源免费,一直在更新

本文紧接着上文介绍了xlwings模块一些常用的api


xlwings基本对象

常用函数和方法

  1. 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()
  2. sheet 常用的api
    # 引用某指定sheet
    sht=xw.books['工作簿名称'].sheets['sheet的名称']
    # 激活sheet为活动工作表
    sht.activate()
    # 清除sheet的内容和格式
    sht.clear()
    # 清除sheet的内容
    sht.contents()
    # 获取sheet的名称
    sht.name
    # 删除sheet
    sht.delete
  3. 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()
  4. books 工作簿集合的api
    # 新建工作簿
    xw.books.add()
    # 引用当前活动工作簿
    xw.books.active
  5. sheets 工作表的集合
    # 新建工作表
    xw.sheets.add(name=None,before=None,after=None)
    # 引用当前活动sheet
    xw.sheets.active

实例

大Z老师,教了小z同学怎么用python操作Excel之后,利用第一篇和第二篇的知识,编写了一个python小脚本,给小Z同学演示了一下怎么用python调整单元格的行宽、列宽和背景色,做一些Interesting的事。

大Z老师的作品.png

小Z同学在看了这么cliche但是好玩的东西之后,自己果断地修改了代码,改变了单元格的颜色,并在sheet里面进行了题字,然后,便有新的作品:

小z的作品.png

下一课有机会教小z同学,利用python自带的time模块,让Excel中静态的画和字动起来,成为像gif一样的图片。

参考资料:
xlwings官方文档

相关文章

网友评论

  • 一起学分析:# 清除sheet的内容
    sht.contents()
    这里应该是
    sht.clear_contents()
  • 730293bbcacf:楼主,xlwings 做chart 怎么设置chart title 和坐标轴标题? 还有单元格的格式怎么设置。请原谅我是小白。。。:smile:
  • c822036cd059:照了您的方法wb.sheets['Sheet1'].range('A4').value=r'人生' 打开后发现时乱码的怎么处理呢。。。 我用的python 2.7
    不会弹琴的白瑞德:楼主,你好。
    请问range.api 更进一步怎么自学?我在官网上阅读了document,但似乎没有很具体的介绍。比如我想为range('A1')设置自动换行。我怎样才能找到如何写这个syntax

    期待您的回复
    c822036cd059:@LuckyFrog 嗯嗯多谢 实在很烦 2的编码 换成python3方便多了
    早起收果子:@generallin 你换成英文先试一下呢?如果英文可以的话,就是是编码的问题了
  • 2547c2307c7c:苹果电脑 在输入完数据 save 完 close的时候 出错是怎么回事
    早起收果子:@Gadw 苹果电脑没有研究过,你只有翻一翻文档了。。。
  • fb12b73f17a9:感觉xlwings的模块看的晕晕的。。。
    早起收果子:@人间如梦 熟能生巧,要多用才记得清楚。我也记不清楚,其实不太用
  • chargingcc:你这提到time 模块倒是让我想到了很多好玩的东西了~
    早起收果子:@chargingcc 嗯嗯,这个是的。
    chargingcc:@LuckyFrog 可以动字符画都可以弄了,就是代价比较大。毕竟这个是实时改,不像word 或者 ppt那样一页一页的切换来得方便。
    早起收果子:@455321708fda 可以怎么玩呢?

本文标题:插上翅膀,让Excel飞起来——xlwings(二)

本文链接:https://www.haomeiwen.com/subject/romvvttx.html