在上篇文章《操作Excel的Xlwings教程(一)》中介绍了Python 中操作Excel的一些模块,重点介绍了Xlwings的一些基本操作。

本次文章将继续上次的知识点,将介绍Xlwings的一些API知识,并展示一些小例子,让大家可以跟着教程进行实际的操作。

一、Apps

先来看一点点代码

import xlwings as xw

app1 = xw.App()

app2 = xw.App()

print(xw.apps)

第二、三行代码建立了两个创建工作簿实例,运行后发现:默认的打开了两个工作簿,这两个工作簿会显示的存在于你的桌面。

如果不想显示,我们在创建实例的时候可以使用参数:wx.App(visible=False)

第四行输出为:Apps([, ]),其中[9244]和[19476]即为这两个实例的PID。

其他方法:

xw.apps.active # 返回活动的应用程序

# print(xw.apps.active) # 输出,活动应用程序的key

xw.apps.count # 计算app的总数

xw.apps.add() # 新增一个app

xw.apps.keys() # 返回所有Excel实例的PID

Active:很多小伙伴可能对激活不是很清楚,举个例子:我们再使用Excel软件的时候,可以打开好几个工作簿,但是我们不能对打开的工作簿同时进行操作,只能操作其中一个。这个Active的作用就是激活其中的一个你想使用的工作簿,将它变为活动工作簿。

二、APP

如何找出当前打开的所有Book对象呢?

我们先建立几个workbook,看看都有什么效果:

for i in range(1,4):

wookbook = xw.Book() #创建新的App并在创建的App新建Book

print(wookbook)

print(xw.books) #当前打开的所有Book对象的集合

输出如下:

Books([,, ])

可知:xw.Book()会新建工作簿,这里默认会新建一个App,即打开Excel程序,并新建一个工作簿。而且Book这种方式则会打开多个窗口,之前所说的App.books.open方式则不会。

顺便提一下引用工作簿的方法:(使用工作簿前要引用工作簿)

xw.Book('工作簿1') # 通过Book

xw.books['工作簿1'] # 通过books

(1)wb.app.calculate() # Calculates all open books.

(2)wb.app.calculation = ‘manual’ # 设置计算模式

(3)wb.app.display_alerts = True # 默认值为True。False的情况下执行操作的时候会忽略Excel的提示和警报消息(即弹窗信息)

(4)wb.app.screen_updating = False # 禁止屏幕更新(刷新)

(5)wb.app.range(cell1, cell2=None) # 获取单元格

(6)wb.app.selection # 将所选单元格作为Range返回

(7)xw.App().version # 返回Excel程序版本号

三、Books

首先要知道所有的Book构成Books,即Books是所有Book对象的集合,在第二节中已有描述。

那么Books中有哪些常用的方法或属性呢?

我们在示例中进行简单的说明:

import xlwings as xw

app1 = xw.App()

app2 = xw.App()

print(xw.books)

book_keys = xw.apps.keys()

first_book = book_keys[0] # 取列表的第一个值

print(xw.apps[first_book].books) # 应用

print(app1.books.active) # 激活一个Book

print('count1:',app1.books.count) # 先打印一下app1下Book的总数

app1.books.add() # 增加一个新的Book,此新建的Book将自动变成被激活的Book

print('count1:',app1.books.count) # 再次打印app1下Book的总数

app1.books.open('1.xlsx') # 打开操作,如果工作簿未打开则打开,若它已经打开,则返回工作簿对象。

# 或指定绝对路径打开文件 app1.books.open('D:\datafile\1.xlsx')

print(app1.books.open('1.xlsx')) # 再一次打印app1下Book的总数

print('count1:',app1.books.count)

以上print的输出依次为:

此时win10系统中,资源管理器的Excel进程显示如下:

可以看出,app1下打开了3个工作簿,app2下打开了1个工作簿。若想关闭某一个app下的全部工作簿的时候,可以使用kill(),如app1.kill()。

四、Book

官网中介绍到:A book object is a member of the books collection,即Book对象是Books集合的成员。下表显示了xw.Book()和xw.books三种情况下的操作:(上篇推文也有介绍)

Tips:差别在于xw.Book()创建新的工作薄实例,xw.books是在活动工作薄中寻找一个实例

xw.Book()打开文件的时候,可选参数较多,具体的参数可以查看其构造函数,或者查看上篇文章10先生:Python操作Excel的Xlwings教程(一)​zhuanlan.zhihu.com

方法和属性

xw.Book.activate(steal_focus=True) # True则激活最前面的窗口,并将焦点从python移交给excel

xw.Book.app # 获取创建工作簿的app对象

xw.Book.caller() # 当通过RunPython从Excel调用Python函数时引用调用的工作簿

xw.Book.set_mock_caller() # 设置当前工作薄为Python代码的调用者即set_mock_caller让Python知道谁是调用者

xw.Book.close() # 关闭工作簿而不进行保存

xw.Book.selection # 返回选定的单元格作为Range

xw.Book.macro() # 在Excel VBA中运行Sub或Function

xw.Book.name # 返回工作簿的名称

xw.Book.names # 返回一个名称集合

xw.Book.save(path=None) # 保存工作簿,可传入保存路径,同名会直接覆盖

xw.Book.sheets # 返回表示工作簿中所有工作表的工作表集

对于xw.Book.set_mock_caller()的解释此处引用网上的一段话:“有时代码是从Python环境直接调试或调用的,没有使用Excel里面的RunPython, 这时候没有地方设定代码的调用者是谁,就运行这个函数来假装一下某个workbook就是这些代码的调用者,让Python环境与调用者能够关联起来。”

# 此代码在Excel中通过RunPython和Python直接运行

import os

import xlwings as xw

def my_macro():

sheet = xw.Book.caller().sheets[0]

sheet.range('A1').value = '我爱python知识学堂'

if __name__ == '__main__':

xw.Book('1.xlsm').set_mock_caller() # 设置调用者

my_macro()

关于这个例子在后期会在解释,主要是告诉大家可以使用Python实现对Excel的操作实现。具体实现的时候我们还要搭建在Excel中运行Python的环境。

关于一些操作不理解的小伙伴建议打开编译器进行实践一下哦。

五、小结

这次的推文主要介绍了Apps、App、Books和Book相关的知识,对于这些概念觉可以这样理解和记忆:App相当于Excel程序(前文的进程截图);

​Book相当于Excel的工作簿;

Range相当于单元格,也可以是单元格区域;

多个Excel程序则由Apps表示,单个为App;

多个工作簿用Books表示,单个为Book;

多个工作表用Sheets表示,单个为Sheet。

wxpython处理excel_Python操作Excel的Xlwings教程(二)相关推荐

  1. Python操作Excel的Xlwings教程(二)

    在上篇推文<操作Excel的Xlwings教程(一)>中介绍了Python 中操作Excel的一些模块,重点介绍了Xlwings的一些基本操作. 本次推文将继续上次的知识点,将介绍Xlwi ...

  2. Python操作Excel的Xlwings教程(五)

    在上篇推文<操作Excel的Xlwings教程(四)>中重点介绍了Xlwings中的Shape和Chart等API知识点.本次推文将继续上次的知识点,将继续介绍Xlwings中其他API相 ...

  3. python菜鸟excel教程-Python操作Excel的Xlwings教程(一)

    在日常的工作中,我们或多或少的都要和Excel打交道.甚至在一些领域,某一些业务人员的主要工作就是处理Excel表格,处理大量的Excel数据并生成一系列的报表.对于程序员朋友们来说,更喜欢以代码的形 ...

  4. vb设置excel 字体 加粗 微软雅黑_Python操作Excel的Xlwings教程(六)

    最近在使用Xlwings的时候,发现有对Excel表格进行设置字体大小和颜色等操作.想必小伙伴们在日常的工作中也遇到了这样的问题,为此我这里总结一些操作供大家参考: 一.创建表格 import xlw ...

  5. python3.8安装xlwings_Python操作Excel的Xlwings教程(一)

    在日常的工作中,我们或多或少的都要和Excel打交道.甚至在一些领域,某一些业务人员的主要工作就是处理Excel表格,处理大量的Excel数据并生成一系列的报表.对于程序员朋友们来说,更喜欢以代码的形 ...

  6. xlwings复制sheet_Python操作Excel的Xlwings教程(六)

    最近在使用Xlwings的时候,发现有对Excel表格进行设置字体大小和颜色等操作.想必小伙伴们在日常的工作中也遇到了这样的问题,为此我这里总结一些操作供大家参考: 一.创建表格 import xlw ...

  7. Python操作Excel的Xlwings教程(八)——Excel使用VBA调用Python

    这次推文的主题,在Xlwings中使用VBA的宏来进行Excel的操作. 知识准备 在Xlwings的官方文档中,我寻找到了一个关于Python API的东西.传送门如下: https://docs. ...

  8. 【web开发】☆★之利用POI操作Excel表格系列教程【6】遍历工作簙行和列取值

    [web开发]☆★之利用POI操作Excel表格系列教程[6]遍历工作簙行和列取值 package com.xiaoye.demo; import java.io.FileInputStream; i ...

  9. python excel库pip install_超全整理|Python 操作 Excel 库 xlwings 常用操作详解!

    原标题:超全整理|Python 操作 Excel 库 xlwings 常用操作详解! 来源:早起Python 作者:陈熹.刘早起 大家好,我是早起. 在之前的文章中我们曾详细的讲解了如何使用openp ...

最新文章

  1. 面向对象的五大原则与IOC
  2. 【uva 1614】Hell on the Markets(算法效率--贪心)
  3. OpenBSD配置Apache反向代理
  4. python 怎么在一行获取多个数字
  5. 【Linux系统编程】线程私有数据
  6. c语言 sizeof_c语言详解sizeof
  7. Linux监控命令之 top
  8. 宿主机进程挂载到容器内_迄今为止最严重的容器逃逸漏洞:Docker cp命令漏洞分析(CVE201914271)...
  9. sysbench的框架实现介绍
  10. Mac设置terminal 像其他linux发行版一样显示工作路径
  11. Linux虚拟化:KVM影子页表
  12. 【Java方法】从方法中返回多个值
  13. mpandroidchart 设置x轴数据_跟小白学Python数据分析——绘制条形图
  14. j​a​v​a​实​现​访​百​度​文​库​、​道​客​巴​巴​、​豆​丁​阅​读(http://wenku.baidu.com/view/ad30168fbceb19e8b8f6baea.html)
  15. 0.05‱的人生赢家!我们昨天仰视的学霸,今天又成了千亿富豪!
  16. ffmpeg 结合 ASS字幕制作+特效制作
  17. ResNet 论文阅读笔记
  18. 测试员入职新公司如何快速熟悉新业务?
  19. 文字竖直居中 html,CSS 文字垂直居中
  20. [matlab]获取多项式的系数,表达式的系数

热门文章

  1. 2021 版 Spring Boot 基础知识复习手册(2w字,建议收藏)
  2. 信息系统项目管理知识--项目范围管理
  3. 蓝桥杯java第八届第一题--购物单
  4. Oracle数据库之集合运算
  5. 一天搞定CSS:表单(form)--20
  6. (仿头条APP项目)5.列表页面设计实现
  7. 一道题,最小操作次数使数组元素相等引发的思考
  8. java 用sevlet实现ip定位以及天气预报的功能
  9. 选择排序由浅到深详细分析和图解
  10. JDBC进阶:调用数据库,将文件或其他字节文件存入数据库,再从数据库取出写回硬盘