python操作excel-python操作excel(内附python教程分享)
今天学习了下xlwings这个库,目的是为了让计算机自动化操作excel表,当某天需要做一些很繁琐的事情,就可以派上用场啦。
python操作excel(内附python教程分享)
基本对象
网上刮来的图,很好。大概就是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就跟下图的结果.
python操作excel(内附python教程分享)
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:获取当前工作簿中的当前表格中的范围。
python操作excel(内附python教程分享)
python操作excel(内附python教程分享)
一行,一列,一个区域内的范围都能获得
screen_updating:屏幕更新,就是说你在excel表中的操作会实时更新,关闭实时更新可以加快脚本运行。默认是True。
selection:将所选定的单元格(cells)以Range对象返回。
python操作excel(内附python教程分享)
选定了如下的表格
python操作excel(内附python教程分享)
运行结果显
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)的集合。
python操作excel(内附python教程分享)
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。
python操作excel(内附python教程分享)
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:当鼠标悬停时,出现的提示。
python操作excel(内附python教程分享)
python操作excel(内附python教程分享)
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)
python操作excel(内附python教程分享)
color
column:返回Range对象的第一列编号。
python操作excel(内附python教程分享)
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)"
python操作excel(内附python教程分享)
formulaformula_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").left
108.0
python操作excel(内附python教程分享)
如果我把第一列拉长
python操作excel(内附python教程分享)
拉长第一列>>> app.range("C1","C3").left
138.0name:设置或获取Range的名称。
number_format:获取或设置Range的内容格式。
offset(row_offset=0, column_offset=0):返回一个偏移后的Range现在是第一行,第一列
>>> r
A1偏移到右下角,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。
python操作excel(内附python教程分享)
设置为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学习资料!
python操作excel(内附python教程分享)
pytyhon学习资料
python操作excel(内附python教程分享)
python学习资料
今天学习了下xlwings这个库,目的是为了让计算机自动化操作excel表,当某天需要做一些很繁琐的事情,就可以派上用场啦。2019-11-05 07:00:00
今天学习了下xlwings这个库,目的是为了让计算机自动化操作excel表,当某天需要做一些很繁琐的事情,就可以派上用场啦。2019-11-05 09:00:23
今天学习了下xlwings这个库,目的是为了让计算机自动化操作excel表,当某天需要做一些很繁琐的事情,就可以派上用场啦。2019-11-05 07:30:00
今天学习了下xlwings这个库,目的是为了让计算机自动化操作excel表,当某天需要做一些很繁琐的事情,就可以派上用场啦。2019-11-04 05:28:51
今天学习了下xlwings这个库,目的是为了让计算机自动化操作excel表,当某天需要做一些很繁琐的事情,就可以派上用场啦。2019-11-04 10:07:04
今天学习了下xlwings这个库,目的是为了让计算机自动化操作excel表,当某天需要做一些很繁琐的事情,就可以派上用场啦。2019-11-04 03:06:25
今天学习了下xlwings这个库,目的是为了让计算机自动化操作excel表,当某天需要做一些很繁琐的事情,就可以派上用场啦。2019-11-04 10:39:12
今天学习了下xlwings这个库,目的是为了让计算机自动化操作excel表,当某天需要做一些很繁琐的事情,就可以派上用场啦。2019-11-04 04:39:03
今天学习了下xlwings这个库,目的是为了让计算机自动化操作excel表,当某天需要做一些很繁琐的事情,就可以派上用场啦。2019-11-04 08:48:00
今天学习了下xlwings这个库,目的是为了让计算机自动化操作excel表,当某天需要做一些很繁琐的事情,就可以派上用场啦。2019-11-04 06:19:27
今天学习了下xlwings这个库,目的是为了让计算机自动化操作excel表,当某天需要做一些很繁琐的事情,就可以派上用场啦。2019-11-04 05:36:21
今天学习了下xlwings这个库,目的是为了让计算机自动化操作excel表,当某天需要做一些很繁琐的事情,就可以派上用场啦。2019-11-03 05:58:08
今天学习了下xlwings这个库,目的是为了让计算机自动化操作excel表,当某天需要做一些很繁琐的事情,就可以派上用场啦。2019-11-04 04:01:37
今天学习了下xlwings这个库,目的是为了让计算机自动化操作excel表,当某天需要做一些很繁琐的事情,就可以派上用场啦。2019-11-04 03:59:26
今天学习了下xlwings这个库,目的是为了让计算机自动化操作excel表,当某天需要做一些很繁琐的事情,就可以派上用场啦。2019-11-04 11:20:00
今天学习了下xlwings这个库,目的是为了让计算机自动化操作excel表,当某天需要做一些很繁琐的事情,就可以派上用场啦。2019-11-04 01:05:17
今天学习了下xlwings这个库,目的是为了让计算机自动化操作excel表,当某天需要做一些很繁琐的事情,就可以派上用场啦。2019-11-04 08:45:06
今天学习了下xlwings这个库,目的是为了让计算机自动化操作excel表,当某天需要做一些很繁琐的事情,就可以派上用场啦。2019-11-04 01:12:36
内容由用户发布,不代表本站观点。如发现有害或侵权内容。请点击这里
python操作excel-python操作excel(内附python教程分享)相关推荐
- python全套学习方法_python学习方法总结(内附python全套学习资料)
种一棵树最好的时间是十年前,第二好的时间是现在 (文末有资料获取方法) 先聊聊互联网转行那些事儿 很多人是小白,想从事或转行互联网,想以python为切入口,那么恭喜你,这可能是你离互联网工作最捷径的 ...
- python练手经典100例-非常适合Python菜鸟练手的趣味题(内附学习教程分享)
Python虽然入门容易,但是涉及的知识点非常多,而且技巧性很强!这些技巧就像一串一串的珠子,需要一些题目的不断的练手才能熟练掌握串联起来,把知识点掌握牢固! 今天我就精选了3道趣味的Python题目 ...
- mybatis代码自动生成器_最近很火的文章自动生成器,python源码公开了(内附python代码)
学了python,但是又不知道可以用来干嘛.开发一个计算器?太low了.开发一个网站?感觉网站涉及太多知识点,一个人搞不定.不用慌,本文介绍一个最近很火的一个文章自动生成器,它是用python写的,能 ...
- python小说自动生成器_最近很火的文章自动生成器,python源码公开了(内附python代码)...
学了python,但是又不知道可以用来干嘛.开发一个计算器?太low了.开发一个网站?感觉网站涉及太多知识点,一个人搞不定.不用慌,本文介绍一个最近很火的一个文章自动生成器,它是用python写的,能 ...
- python全栈工程师薪水_不止 20K,Python 工程师薪资再飙升(内附转型指南)
原标题:不止 20K,Python 工程师薪资再飙升(内附转型指南) Python 诞生之初就被誉为最容易上手的编程语言.进入火热的 AI 人工智能时代后,它也逐渐取代 Java,成为编程界的头牌语言 ...
- 双代号网络图基础算法_最新(免锁版)网络图横道图绘制软件,内附安装教程,制图做更快...
最新(免锁版)网络图横道图绘制软件,内附安装教程,制图做更快 网络图横道图绘制可制作双代号网络计划.单代号网络图.横道图(及甘特图Gantt),是最常用的计划与控制手段之一,项目管理的必备工具,还可作 ...
- 单代号网络图计算例题_最新(免锁版)网络图横道图绘制软件,内附安装教程,制图做更快...
最新(免锁版)网络图横道图绘制软件,内附安装教程,制图做更快 网络图横道图绘制可制作双代号网络计划.单代号网络图.横道图(及甘特图Gantt),是最常用的计划与控制手段之一,项目管理的必备工具,还可作 ...
- 11月二开版PHP零距离泛目录程序源码,开源无限制,最强泛解析站群,内附安装教程
csdn下载: https://download.csdn.net/download/dujiangdu123/13117609 泛解析站群,内附安装教程,此程序在域名方面,做了泛解析操作,任何前缀, ...
- 2023最新小额现金贷系统源码+可打包成APP/内附安装教程
正文: 内附安装教程,本源码只作学习使用,切勿违规经营. 1.将源码上传到根目录并且解压. 2.导入数据库文件"cash-loan.sql"到你的数据库 3.修改域名配置文件:&q ...
最新文章
- 二:SpringAOP
- cumsum在matlab中,matlab中cumsum函数和sum函数详解
- 最小生成树(prime算法、kruskal算法) 和 最短路径算法(floyd、dijkstra)
- STM32——GPIO(1)
- postman安装路径_Newman进行postman脚本自动化
- html页面判断其他div为空,将外部html加载到div - 页面加载然后变为空白
- Eclipse在线安装SVN插件
- pytorch如何将训练提速?
- esp8266 at接收数据中断时间_利用ESP8266获取网络同步时间(北京时间)
- php 修改文件的权限_php修改文件权限
- What is the !! (not not) operator in JavaScript?
- matlab 简单低通滤波器,基于MATLAB的理想低通滤波器的设计
- 爱python,爱学习
- 10个最受欢迎的JavaScript图表库
- 35岁的程序员:第26章,回家
- fastJson API 最快的Json和对象转换工具
- MySQL 分库分表实践
- CAD自动绘图如何实现钣金折弯开角与面板厚度算法
- Python3 猴子偷桃
- PullAndTab组合横排滑动上落下提