Python操作Excel教程(图文教程,超详细)Python xlwings模块详解,_xlwings操作excel(1)

学习路线:

这个方向初期比较容易入门一些,掌握一些基本技术,拿起各种现成的工具就可以开黑了。不过,要想从脚本小子变成黑客大神,这个方向越往后,需要学习和掌握的东西就会越来越多以下是网络渗透需要学习的内容:
在这里插入图片描述

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以点击这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

import xlwings as xw

with xw.App(visible=True) as app:
book = app.books[0]
print(book.name)
print(book.sheets)
print(book.app, app)
print(book.selection)


输出:



工作簿1
Sheets([<Sheet [工作簿1]Sheet1>])
<App [excel] 18392> <App [excel] 18392>
<Range [工作簿1]Sheet1!$A$1>


  

* `book.save()`:保存工作簿,如果不指定路径,则保存到当前路径。


**语法**



book.save( path, password )


**参数**


* path :(可选)文件保存路径
* password :(可选)文件打开密码


**实例**



import xlwings as xw

with xw.App(visible=True) as app:
book = app.books[0]
book.save(r’E:/test1.xlsx’, 123456)


预期:文件保存到E盘,打开需要「输入密码」。


  

* `book.to_pdf()`:导出PDF,如果不指定路径,则保存到当前路径。


注意:Excel必须有「内容」,才能导出PDF,否则会报错


**语法**



book.to_pdf( path, include, exclude, show )


**参数**


* path :(可选)PDF文件保存路径,默认当前目录
* include :(可选)包含哪些工作表,单个工作表名 或 多个工作表名的列表
* exclude :(可选)不包含哪些工作表,单个工作表名 或 多个工作表名的列表
* show :(可选)创建后使用默认应用打开PDF,默认值False


**实例**



import xlwings as xw

with xw.App(visible=True) as app:
book = app.books[0]
book.sheets[0][‘A1’].value = ‘text’
book.to_pdf(show=True)


预期:PDF文件保存到当前目录下,并「自动打开」。


  

## 3、创建工作表


使用工作簿对象 Book ,「创建」工作表,返回工作表对象 Sheet ,一个  Sheet 对应一个工作表,有两种创建方式:


* `app.books[0].sheets.add()`
* `xw.books[0].sheets.add()`


创建工作表时,可以「设置表名」。参数2中, after 表示插入到某个表后面, before 表示插入到某个表前面。


* `app.books[0].sheets.add('name1')`
* `xw.books[0].sheets.add('name2')`


**实例**



import xlwings as xw

with xw.App(visible=True) as app:
app.books[0].sheets.add(‘name1’)
xw.books[0].sheets.add()

print('所有工作表:', app.books[0].sheets)

输出:



所有工作表: Sheets([<Sheet [工作簿1]Sheet3>, <Sheet [工作簿1]name1>, <Sheet [工作簿1]Sheet1>])


  

### 3.1、使用工作表


通过工作簿对象 Book ,「使用」指定的工作表,根据工作表的`名字`/`索引`/`序号`,并返回工作表对象 Sheet ,有六种方式:


* `app.books[0].sheets[0]`
* `app.books[0].sheets(1)`
* `app.books[0].sheets['Sheet1']`
* `xw.books[0].sheets[0]`
* `xw.books[0].sheets(1)`
* `xw.books[0].sheets['Sheet1']`


注意:`()` 根据 `序号` 选择,从1开始;`[]`根据 `索引` 选择,从0开始。


**实例**



import xlwings as xw

with xw.App(visible=True) as app:
book = app.books[0]
print(book.sheets[0])
print(book.sheets(1))
print(book.sheets[‘Sheet1’])

wb = xw.books[0]
print(wb.sheets[0])
print(wb.sheets(1))
print(wb.sheets['Sheet1'])

print('工作表列表:', book.sheets)

输出:



<Sheet [工作簿1]Sheet1>
<Sheet [工作簿1]Sheet1>
<Sheet [工作簿1]Sheet1>
<Sheet [工作簿1]Sheet1>
<Sheet [工作簿1]Sheet1>
<Sheet [工作簿1]Sheet1>
工作表列表: Sheets([<Sheet [工作簿1]Sheet1>])


  

### 3.2、操作工作表


1)工作表名


* `app.books[0].sheets[0].name = 'sheetName'`:设置工作表名
* `app.books[0].sheets[0].name`:获取工作表名
* `app.books[0].sheets[0].book`:获取工作表所属的工作簿
* `app.books[0].sheets[0].index`:获取工作表的索引(从1开始)


2)行高列宽


* `app.books[0].sheets[0].autofit()`:自适应行高列宽
* `app.books[0].sheets[0].autofit(axis='rows')`:自适应行高
* `app.books[0].sheets[0].autofit(axis='columns')`:自适应列宽


3)导出工作表(不指定路径,默认保存到当前目录)


* `app.books[0].sheets[0].to_html()`:导出 HTML
* `app.books[0].sheets[0].to_pdf()`:导出 PDF(内容不能为空)


4)复制工作表


* `app.books[0].sheets('sheetName').copy()`:复制工作表为副本
* name:(可选,str)副本的名字
* before:(可选,sheet对象)复制到哪个工作表之前
* after:(可选,sheet对象)复制到哪个工作表之后


  

### 3.3、删除工作表


* `app.books[0].sheets[0].clear_contents()`:删除文本但保留样式
* `app.books[0].sheets[0].clear_formats()`:删除样式但保留文本
* `app.books[0].sheets[0].clear()`:删除文本和样式
* `app.books[0].sheets[0].delete()`:删除工作表


  

## 4、读写单元格


单元格不需要创建,选中单元格「范围」,然后读写即可,一个 Range 对应一个单元格。


### 4.1、选择单元格


按照范围、位置,选择单元格,并返回单元格对象,有多种方式。


1)按照A1表示法(例:选中A1到B3范围的单元格)


* `sheet.range('A1')`
* `sheet.range('A1:B2')`


2)按照坐标位置,坐标从左上角起始


* `sheet.range(1, 1)`
* `sheet.range((1, 1), (3, 4))`


3)切片方式选择范围


* `sheet['A1']`
* `sheet['A1:B2']`
* `sheet[0, 0]`
* `sheet[0:1, 0:4]`


4)按照单元格名字


* `sheet.range('a1_name')`


**实例**



import xlwings as xw

with xw.App(visible=True) as app:
book = app.books[0]
sheet = book.sheets[0]
range1 = sheet.range(‘A1’)
print(range1)
range2 = sheet.range(‘A1:B2’)
print(range2)
range3 = sheet.range(1, 1)
print(range3)
range4 = sheet.range((1, 1), (3, 4))
print(range4)
print(sheet[‘A1’])
print(sheet[‘A1:B2’])
print(sheet[0, 0])
print(sheet[0:1, 0:4])


输出:



<Range [工作簿1]Sheet1!$A 1 > < R a n g e [ 工作簿 1 ] S h e e t 1 ! 1> <Range [工作簿1]Sheet1! 1><Range[工作簿1]Sheet1!A 1 : 1: 1:B 2 > < R a n g e [ 工作簿 1 ] S h e e t 1 ! 2> <Range [工作簿1]Sheet1! 2><Range[工作簿1]Sheet1!A 1 > < R a n g e [ 工作簿 1 ] S h e e t 1 ! 1> <Range [工作簿1]Sheet1! 1><Range[工作簿1]Sheet1!A 1 : 1: 1:D 3 > < R a n g e [ 工作簿 1 ] S h e e t 1 ! 3> <Range [工作簿1]Sheet1! 3><Range[工作簿1]Sheet1!A 1 > < R a n g e [ 工作簿 1 ] S h e e t 1 ! 1> <Range [工作簿1]Sheet1! 1><Range[工作簿1]Sheet1!A 1 : 1: 1:B 2 > < R a n g e [ 工作簿 1 ] S h e e t 1 ! 2> <Range [工作簿1]Sheet1! 2><Range[工作簿1]Sheet1!A 1 > < R a n g e [ 工作簿 1 ] S h e e t 1 ! 1> <Range [工作簿1]Sheet1! 1><Range[工作簿1]Sheet1!A 1 : 1: 1:D$1>


  

### 4.2、写入数据到单元格


向指定单元格中写入数据,数据可以是`单个值`、`一维列表`、`二维列表`


* `sheet.range('A1').value = 'hello Excel'`
* `sheet.range('A2').value = [1, 2, 3]`
* `sheet.range('A3').value = [[11, 22], [33, 44]]`


写入效果参见下图


![在这里插入图片描述](https://img-blog.csdnimg.cn/b0039a01c96f4311ad94579b4f3d422e.png)


提示:已经有数据的单元格,再次写入,会覆盖原来的数据,常用来修改单元格数据。


  

### 4.3、读取单元格的数据


按照A1表示法,读取指定范围内单元格的数据,读出的数据可以是`单个数据`、`列表`、`二维列表`形式。


* `sheet.range('A1').value`
* `sheet.range('A2:C2').value`
* `sheet.range('A3:B4').value`


我们将上一步写入的数据读出来,输出结果如下:



hello Excel
[1.0, 2.0, 3.0]
[[11.0, 22.0], [33.0, 44.0]]


  

### 4.4、设置单元格样式


1)背景颜色


* `sheet.range('A1:A2').color = '#FF0000'`:按照颜色代码设置颜色
* `sheet.range('B1').color = (255, 255, 0)`:按照颜色坐标设置颜色
* `sheet.range('A2').color = None`:去除背景颜色
* `sheet.range('A2').color is None`:判断背景颜色是否为空
* `sheet.range('B1').color`:获取背景颜色


2)行高列宽


* `sheet.range('A1').row_height`:获取行高
* `sheet.range('A1').column_width`:获取列宽
* `sheet.range('A1').row_height = 20`:设置行高
* `sheet.range('A1').column_width = 20`:设置列宽
* `sheet.range('A1').rows.autofit()`:自适应行高
* `sheet.range('A1').columns.autofit()`:自适应列宽
* `sheet.range('A1').autofit()`:自适应行高列宽


3)合并单元格


* `sheet.range('A1:C1').merge()`:合并单元格
* `sheet.range('B1:C1').unmerge()`:取消合并
* `sheet.range('A1').merge_area`:返回指定单元格的合并范围,如果没有合并,就返回单元格本身
* `sheet.range('A1').merge_cells`:判断是否包含合并单元格(True包含;False不包含)


4)函数公式


* `sheet.range('D1').formula = '=SUM(A1:C1)'`:设置函数公式
* `sheet.range('D1').formula`:获取函数公式


5)单元格名字


* `sheet.range('A1').name = 'a1_name'`:设置单元格名字
* `sheet.range('A1').name`:获取单元格名字


6)复制粘贴


* `sheet.range('A1').copy()`:将单元格的内容复制到剪贴板
* `sheet.range('A2').paste()`:将剪贴板的内容复制到单元格


  

### 4.4、删除单元格


删除指定范围的单元格、数据、样式


* `sheet.range('A1').clear_contents()`:删除数据但保留样式
* `sheet.range('A2').clear_formats()`:删除样式但保留数据
* `sheet.range('A3').clear()`:删除数据和样式
* `sheet.range('A1').delete()`:删除单元格




本人从事网路安全工作12年,曾在2个大厂工作过,安全服务、售后服务、售前、攻防比赛、安全讲师、销售经理等职位都做过,对这个行业了解比较全面。


最近遍览了各种网络安全类的文章,内容参差不齐,其中不伐有大佬倾力教学,也有各种不良机构浑水摸鱼,在收到几条私信,发现大家对一套完整的系统的网络安全从学习路线到学习资料,甚至是工具有着不小的需求。


最后,我将这部分内容融会贯通成了一套282G的网络安全资料包,所有类目条理清晰,知识点层层递进,需要的小伙伴可以点击下方小卡片领取哦!下面就开始进入正题,如何从一个萌新一步一步进入网络安全行业。


![](https://img-blog.csdnimg.cn/img_convert/311903982dea1d8a5d2c98fc271b5b41.jpeg)



### 学习路线图


 其中最为瞩目也是最为基础的就是网络安全学习路线图,这里我给大家分享一份打磨了3个月,已经更新到4.0版本的网络安全学习路线图。


相比起繁琐的文字,还是生动的视频教程更加适合零基础的同学们学习,这里也是整理了一份与上述学习路线一一对应的网络安全视频教程。


![](https://img-blog.csdnimg.cn/img_convert/1ddfaf7dc5879b1120e31fafa1ad4dc7.jpeg)


#### 网络安全工具箱


当然,当你入门之后,仅仅是视频教程已经不能满足你的需求了,你肯定需要学习各种工具的使用以及大量的实战项目,这里也分享一份**我自己整理的网络安全入门工具以及使用教程和实战。**


![](https://img-blog.csdnimg.cn/img_convert/bcd1787ce996787388468bb227d8f959.jpeg)


#### 项目实战


最后就是项目实战,这里带来的是**SRC资料&HW资料**,毕竟实战是检验真理的唯一标准嘛~


![](https://img-blog.csdnimg.cn/img_convert/35fc46df24091ce3c9a5032a9919b755.jpeg)


#### 面试题


归根结底,我们的最终目的都是为了就业,所以这份结合了多位朋友的亲身经验打磨的面试题合集你绝对不能错过!

**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化资料的朋友,可以点击这里获取](https://bbs.csdn.net/topics/618540462)**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

  • 13
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值