今天学习了下xlwings这个库,目的是为了让计算机自动化操作excel表,当某天需要做一些很繁琐的事情,就可以派上用场啦。

基本对象

网上刮来的图,很好。

大概就是xlwings中可以有多个excel程序。

一个excel程序中可以有多个工作簿。

一个工作簿中可以有多张表格。

一张表格中的内容就看你写什么了。

1.包肯定是要导入的

import xlwings as xw

2. 先创建一个app对象,就是打开一个excel程序。

>>>app = xw.App(visible=True,add_book=True)

>>>app

提醒:

创建一个excel程序,默认会创建一个工作簿(book对象)。

里面主要的两个参数,visible可不可见,add_book添不添加book,默认 都是 True 。

看下app有什么方法

[ 'activate', 'api', 'books', 'calculate', 'calculation', 'display_alerts', 'hwnd', 'impl', 'kill', 'macro', 'pid', 'quit', 'range', 'screen_updating', 'selection', 'version', 'visible']activate(steal_focus=False):激活工作簿,里面有个参数,steal_focus,默认为False,选择True时,会获取工作簿的焦点。

api:应该是返回本地对象所使用引擎,我是window的office就跟下图的结果.

api方法

books:所有book对象的集合。

calculate():计算所有打开的books。

calculation:选择或设置计算模式:manual(手动),automatic(自动)semiautomatic(半自动)。

display_alerts:默认值为True,但为False时:当excel响应,会选择默认响应。

hwnd:返回window的句柄。

kill():终止进程,强制退出。

macro(name):python调用excel中的自定义的Sub和function。

pid:返回app的pid。

quit():在不保存的情况下,退出excel程序。

range:获取当前工作簿中的当前表格中的范围。

一行,一列,一个区域内的范围都能获得

screen_updating:屏幕更新,就是说你在excel表中的操作会实时更新,关闭实时更新可以加快脚本运行。默认是True。

selection:将所选定的单元格(cells)以Range对象返回。

选定了如下的表格

运行结果显

version:显示xlwings版本。

visiable:设置可不可见,默认是True。

3. app中的book对象

我们就用刚刚app中创建的book对象

>>>wb = app.books[0]

>>>wb

当然也可以这样创建book对象

>>>wb =xw.Book()

比较下两种创建对象方式

xw.Book xw.books 创建工作簿 xw.Book() xw.books.add() 还没保存的工作簿 xw.Book('Book1') xw.books['Book1'] 根据路径打开工作簿 xw.Book(r'C:/path/to/file.xlsx') xw.books.open(r'C:/path/to/file.xlsx') 已经打开的book数量 xw.books.count

在来看看book对象有什么方法

['activate', 'api', 'app', 'caller', 'close', 'fullname', 'impl', 'macro', 'name','names', 'open_template', 'save', 'selection', 'set_mock_caller', 'sheets']activate(steal_focus=False):激活book,可以选择获不获取焦点。

api:返回正在使用的引擎的本地对象。

app:返回创建这个book的app对象。

caller():当通过runpython从excel中调用python函数时,引用这个book,还会将其打包成excel中的函数。

例子:import xlwings as xw def my_macro(): wb = xw.Book.caller() wb.sheets[0].range('A1').value = 1

当需要在调试的时候可以使用xw.set_mock_caller()函数。

*close():在没有保存的情况下关闭。

*fullname:以字符串的形式返回对象的名称跟路径。

macro(name):python调用excel中的自定义的Sub和function。

name:返回book的名称。

names:返回一个Names对象集合。

open_template:创建一个已经包含xlwings VBA模块的Excel文件(必须从交互式python shell中调用此方法)

save(path=None):保存工作簿,若为指定路径,保存在当前工作目录。

selection:将所选定的单元格(cells)以Range对象返回。

set_mock_caller:设置用于调试caller()的excel文件,可以直接在python里运行。

例子:def my_macro(): sht = xw.Book.caller().sheets[0] sht.range('A1').value = 'Hello xlwings!'if __name__ == '__main__': xw.Book().set_mock_caller() my_macro()

调用函数会在A1格子上打印,hello xlwings.

sheets:返回所有的工作表(sheet)的集合。

sheets返回的对象

4.book中的sheet对象

同样的,我们使用上面那个book对象。

>>>sht = wb.sheets[0]

>>>sht

看下sheet中有什么方法

['activate', 'api', 'autofit', 'book', 'cells', 'charts', 'clear', 'clear_contents', 'delete', 'impl', 'index', 'name', 'names', 'pictures', 'range', 'select', 'shapes', 'used_range']activate(steal_focus=False):激活sheet,并返回,可以选择获不获取焦点。

api:返回正在使用的引擎的本地对象。

autofit(axis=None):自动调整表中的行,列或两者的宽度

wb.sheets[0].autofit(axis='r'):自动匹配行

wb.sheets[0].autofit(axis= 'c')自动匹配列

wb.sheets[0].autofit()

book:返回创建这个表格的book对象。

cells:返回表示Sheet上所有单元格的Range对象(不仅仅是当前使用的单元格)。

charts:sheet中的所有图表集合。

clear():清除整个sheet的内容和格式。

clear_contents():清除整个sheet的内容,但格式还在。

delete():删除sheet。

index:返回sheet的索引。

name:获取或设置sheet的名字。

names:返回一个Names对象集合。

pictures:返回所有Pictures对象的集合。

range(cell1,cell2=None):在活动的sheet中返回一个Range对象。

select():选择工作表。

shapes:返回所有Shapes对象的集合。

used_range:返回sheet中所有使用过的Range。

used_range

5.sheet中Range对象

选了A1单元格

>>>r = sht.range('A1')

>>>r

1>

看看Range对象的方法

[ 'add_hyperlink', 'address', 'api', 'autofit', 'clear', 'clear_contents', 'color', 'column', 'column_width', 'columns', 'count', 'current_region', 'end', 'expand', 'formula', 'formula_array', 'get_address', 'height', 'hyperlink', 'impl', 'last_cell', 'left', 'name', 'number_format', 'offset', 'options', 'raw_value', 'resize', 'row', 'row_height', 'rows', 'select', 'shape', 'sheet', 'size', 'top', 'value', 'width']add_hyperlink(address, text_to_display=None, screen_tip=None):在单元格上添加超链接。

address:'超链接地址'。

text_to_display:在单元格上显示的文本。

screen_tip:当鼠标悬停时,出现的提示。

address:以字符串的形式返回范围

>>> r.address

'$A$1'

返回了我们A1这个单元格的名称。

api:返回正在使用的引擎的本地对象。

autofit():

自动调整Range内所有单元格的宽度和高度

自动调整列宽:xw.Range('A2:G9').columns.autofit()

自动调整行宽:xw.Range('A2:G9').rows.autofit()

clear():删除Range里的内容和格式。

clear_contents():删除Range里的内容,保留格式。

color :获取或者设置范围里单元额的背景颜色。

设置颜色时,可以使用RGB元组,就像下面这样。

>>> r.color = (0,23,234)

color

column:返回Range对象的第一列编号。

column

column_width:获取或设置Range的宽度。

如果范围中的所有列具有相同的宽度,则返回宽度。

如果范围中的列具有不同的宽度,则返回None。

columns:返回一个RangeColumns对象,该对象表示指定范围内的列.

count返回单元格数量

current_region:返回一个Range对象。选取的范围跟在window中 Ctrl- *一样。

end(direction):返回一个Range对象。相当于window中的Ctrl+Up, Ctrl+down, Ctrl+left, 或 Ctrl+right.

expand(mode='table'):根据选定的模式,扩展范围。

A1单元格选择'right'会扩展成A1~B1。

A1单元格选择down会扩展成A1~A2。>>> import xlwings as xw >>> wb = xw.Book() >>> xw.Range('A1').value = [[None, 1], [2, 3]] >>> xw.Range('A1').expand().address $A$1:$B$2 >>> xw.Range('A1').expand('right').address $A$1:$B$1 >>>xw.Range('A1').expand('down').address $A$1:$A$2formula:获取或设置Range的公式。>>> app.range('A4').formula`'=SUM(A1:A3)'

formula

formula_array:获取或设置给定Range的数组公式。

get_address(row_absolute=True, column_absolute=True, include_sheetname=False, external=False):>>> r.get_address()'$A$1'

row_absolute :布尔型, 默认为True

设置成False,将不会在地址上返回行的名称。

>>> r.get_address(row_absolute=False)'$A1'

column_aosolute:布尔型, 默认为True

设置成false,将不会在地址上返回列的名称。

>>> r.get_address(column_absolute=False)'A$1'

include_sheetname:布尔型,默认为False

设置成True,会在地址上返回表名。

>>> r.get_address(True,True,True)'Sheet1!$A$1'

external :布尔型, 默认为False

设置成True,会在地址上返回工作簿和表的名称。

>>> r.get_address(external=True)'[工作簿1]Sheet1!$A$1'height:返回Range的高度。

hyperlink: 返回指定Range的超链接地址(仅限单个单元格)>>> import xlwings as xw >>> wb = xw.Book() >>> xw.Range('A1').value 'www.xlwings.org' >>> xw.Range('A1').hyperlink 'http://www.xlwings.org'

如果单元格里没有超链接会报错。

last_cell:返回指定Rnage右下角的单元格(只读)>>> app.range('A1','C3').last_cellleft:返回从第一列到Range第一列的距离。>>> app.range('C1','C3').left108.0

如果我把第一列拉长

拉长第一列

>>> app.range('C1','C3').left138.0name:设置或获取Range的名称。

number_format:获取或设置Range的内容格式。

offset(row_offset=0, column_offset=0):返回一个偏移后的Range现在是第一行,第一列>>> rA1偏移到右下角,B2>>> r.offset(1,1)A1偏移到下一行,A2>>> r.offset(1,0)

也可以输入负数,例如offset(-1,-1):偏移到左上方一个单元格。

options(convert=None, **options): 允许设置转换器及其选项. 返Range对象。

参数:

ndim: int类型,维数,比如ndim=1,ndim=2。

numbers:数字类型:比如numbers=int,numbers=float。>>> app.range('A1','C3').value[[1.0, 2.0, 3.0], [3.0, 3.0, 3.0], [3.0, 3.0, 3.0]]>>> app.range('A1','C3').options(numbers=int).value[[1, 2, 3], [3, 3, 3], [3, 3, 3]]

empty:object,空单元格的转换 。

transpose: 默认为False,转置Range的values。

设置为True,会把矩阵转置了在来获取value。

>>> app.range('A1','C3').options(transpose=Flase) .value[[1.0, 4.0, 7.0], [2.0, 5.0, 8.0], [3.0, 6.0, 9.0]]>>> app.range('A1','C3').options(transpose=True) .value[[1.0, 2.0, 3.0], [4.0, 5.0, 6.0], [7.0, 8.0, 9.0]]

expand:str型,默认为None.可以为:'table'(右下),'down','right'。

>>> app.range('A1').options(expand ='right') .value[1.0, 4.0, 7.0]>>> app.range('A1').options(expand ='down') .value[1.0, 2.0, 3.0, ' ']>>> app.range('A1').options(expand ='table') .value[[1.0, 4.0, 7.0], [2.0, 5.0, 8.0], [3.0, 6.0, 9.0], [' ', None, None]]>>> app.range('A1','A3').options(expand ='right') .value[[1.0, 4.0, 7.0], [2.0, 5.0, 8.0], [3.0, 6.0, 9.0]]>>> app.range('A1','C1').options(expand ='down') .value[[1.0, 4.0, 7.0], [2.0, 5.0, 8.0], [3.0, 6.0, 9.0], [' ', None, None]]raw_value:直接获取或设置传递的值,可以加快速度,但可能会不能跨平台。

resize(row_size=None, column_size=None)`:

row:返回指定Range第一行编号。

row_height:获取或设置Range的高度(以磅为单位).如果Range中的所有行具有相同的高度,则返回高度,否则返回None.

rows:返回表示指定Range内的RangeRows对象。

select():选择范围,相当于用鼠标选取范围。

shape:返回Range的维数,以元组的形式,比如:(1,3) 代表1*3的矩阵,(4,2)代表4*2的矩阵。

sheet: 返回Range所属的Sheet对象。

size:Range中元素数量。

top:返回第一行到Range第一行的距离,跟left很像。

value:获取和设置给定Range的值。

width:返回Range的宽度。

6.apps,books,sheets异同

apps:app集合。

books:工作簿集合。

sheets:表格集合。

apps books sheets add(增添对象) √ √ √ active(激活) √ √ √ count(数量) √ √ √ keys √ × × api × √ √ open × √ × 7.总结

看了很多函数后,会发现这些对象很多相似的地方,还有事层层递进的 app----book---sheet--Range。

如果有父集可以找到父集,有子集可以找到子集,没有可以创建,能查询名称,能找到对应的集合。

1.要创建excel工作簿:(app对象或book对象)

xw.Book()

xw.App()

要打开已经存在的工作簿:

xw.books.open(路径)

2.选定sheet:(Sheet对象)

xw.books[0].sheets[0]

3.选定单元格两种方式:

xw.App().books[0].sheets[0].range(cells,cells)

可以构造列表进行excel表的存取。

xw.App().books[0].sheets[0][0,1]

可以用for循环,来进行读取。

当然还有一些问题,自己也没弄懂,希望下次可以解决。

如果有错误或者疑问的话,欢迎指点。

最后最后,如果有帮助的话,不妨点个喜欢!!!

最后,想学习Python的小伙伴们!

请关注+私信回复:“学习”就可以拿到一份我为大家准备的Python学习资料!

pytyhon学习资料

python学习资料

本文仅代表作者个人观点,不代表SEO研究协会网官方发声,对观点有疑义请先联系作者本人进行修改,若内容非法请联系平台管理员,邮箱cxb5918@163.com。更多相关资讯,请到SEO研究协会网www.seoxiehui.cn学习互联网营销技术请到巨推学院www.jutuiedu.com。

python处理excel表格教程-python操作excel(内附python教程分享)相关推荐

  1. python做excel表格代码_python操作excel表格

    我们在写测试用例的时候,是创建一个表格.xlsx,然后把各种条件加到这张表格中去,所以,如何对excel表格操作,是相当重要的一环,那么,接下来,这篇博客就直接教会大家如何通过python去处理平时工 ...

  2. python做excel表格代码_python - 操作excel表格

    说明:由于公司oa暂缺,人事妹子在做考勤的时候,需要通过几个excel表格去交叉比对员工是否有旷工或迟到,工作量大而且容易出错. 这时候it屌丝的机会来啦,花了一天时间给妹子撸了一个自动化脚本. 1. ...

  3. python练手经典100例-非常适合Python菜鸟练手的趣味题(内附学习教程分享)

    Python虽然入门容易,但是涉及的知识点非常多,而且技巧性很强!这些技巧就像一串一串的珠子,需要一些题目的不断的练手才能熟练掌握串联起来,把知识点掌握牢固! 今天我就精选了3道趣味的Python题目 ...

  4. Python黑技术:远程控制男朋友电脑(内附python教程分享)

    今天带给大家一个非常有意思的 python 程序,基于 itchat 实现微信控制电脑.你可以通过在微信发送命令,来拍摄当前电脑的使用者,然后图片会发送到你的微信上.甚至你可以发送命令来远程关闭电脑. ...

  5. python操作excel-python操作excel(内附python教程分享)

    今天学习了下xlwings这个库,目的是为了让计算机自动化操作excel表,当某天需要做一些很繁琐的事情,就可以派上用场啦. python操作excel(内附python教程分享) 基本对象 网上刮来 ...

  6. 包无法安装_详细教程 | 安装Python编程环境以及使用OpenpyXl操作Excel

    详细教程 | 安装Python编程环境以及使用OpenpyXl操作Excel 注意:下列教程为 Windows7 64位:Windows 10有部分步骤有差异,请参考使用! 01 下载Python程序 ...

  7. 基于Python的高校勤工俭学工资管理系统——实现对excel表格的数据操作(xwlings库)

    基于Python的高校勤工俭学工资管理系统 1 需求概述 1.1 需求分析 勤工俭学是指学校组织的或学生个人从事的有酬劳动,用以助学.在我国,许多高校借以对学生进行劳动技术教育,培养正确的劳动观点和态 ...

  8. python操作统计excel表格,生成新excel表格

    0.前言 因产品的同学试着用python统计Excel表格,但百度的程序又一直有各种问题, 所以叫我帮用python实现一个统计Excel表格程序:我之前也没有写过python操作Excel表格的程序 ...

  9. python调用百度OCR识别证件+操作excel表格

    python调用百度OCR识别证件+操作excel表格 如果要操作文件的话最好让程序知道文件存不存在,因为做了GUI界面,报错不会直接弹出来,异常捕获就用得比较频繁 因为面向对象没学好,GUI是用工具 ...

  10. python如何操作excel数据_Python如何操作Excel

    以上可以根据需求的不同,选择合适的工具,现在给大家主要介绍最常用的xlrd&xlwt&xlutils系统工具的使用 1. xlrd&xlwt&xlutils介绍 xlr ...

最新文章

  1. 笔记-【6】-JS中JSON的基础理解!
  2. out.print 嵌套html代码_Shiny与HTML
  3. 本地计算机用户改名,win10本地账户管理员怎么改名,详细操作步骤请看本篇
  4. 【机器学习基础】一文详尽之支持向量机(SVM)算法!
  5. Qt Creator在设计模式下编辑3D资产
  6. 管理用户和PROFILE——用户方案和profile
  7. 博客更新内容简单介绍
  8. python输入错误提示再次输入_Python实现用户登录并且输入错误三次后锁定该用户...
  9. ORCLE conn连接报错
  10. 深入设计模式(二)——单例模式(Singleton Pattern)
  11. 不正确的c语言字符常量是,哪个是不正确的字符常量?
  12. 微积分(二)——曲线积分与曲面积分笔记
  13. word论文排版插件_这是我见过最强大的Word插件!论文、报告、标书、规范全搞定...
  14. c语言ctype函数指针,ctype调用DLL中的函数问题已经成功解决
  15. ubuntu ffmpeg 录制系统音频
  16. 使用输出语句输出一个正方形
  17. BUUCTF 每日打卡 2021-8-11
  18. 基于python机票预定系统_机票预订系统课程设计.doc
  19. 详解SOAP简单对象访问协议
  20. 2015 年最受欢迎的 7 个系统监控工具

热门文章

  1. android 数字时钟代码大全,Android自定义view实现数字时钟
  2. apollo local 模式_Apollo 源码解析 —— 客户端配置 API(一)之一览
  3. mac cad石材填充图案_CAD超级填充教程
  4. Arachni web扫描工具
  5. tensorflow knn 预测房价 注意有 Min-Max Scaling
  6. ES批量索引写入时的ID自动生成算法
  7. C++调用父类的构造函数规则
  8. yum提示Error: rpmdb open failed
  9. linux下安装nginx、python、django
  10. 使用netty编写IM通信界面