〇、前情提要

学习小甲鱼的使用Python读写Excel文件。这是上篇。
参考:

  1. 【办公篇】《极客Python之效率革命》(小甲鱼)https://www.bilibili.com/video/av23697305/?p=1

------------第一课------------

  1. [办公] 使用Python读写Excel文件(1)
    https://fishc.com.cn/thread-101887-1-1.html
  2. [模块档案] openpyxl 模块中文文档(一个读写 EXCEL 文件的模块)https://blog.csdn.net/weixin_43210113/article/details/107505405
  3. 爬取豆瓣 TOP250 电影排行榜
    https://fishc.com.cn/thread-94979-1-1.html
  4. 豆瓣电影 Top 250
    https://movie.douban.com/top250
  5. 我的笔记-【爬虫篇】《极客Python之效率革命》(小甲鱼) b站笔记
    https://blog.csdn.net/weixin_43210113/article/details/107505405

------------第二课------------

  1. [办公] 使用Python读写Excel文件(2)
    https://fishc.com.cn/thread-102046-1-1.html

------------第三课------------

  1. [办公] 使用Python读写Excel文件(3)
    https://fishc.com.cn/thread-102708-1-1.html

------------第四课------------

  1. [办公] 使用Python读写Excel文件(4)
    https://fishc.com.cn/thread-103472-1-1.html

------------第五课------------

  1. [办公] 使用Python读写Excel文件(5)
    https://fishc.com.cn/thread-103980-1-1.html

------------第六课------------

  1. [办公] 使用Python读写Excel文件(6)
    https://fishc.com.cn/forum.php?mod=viewthread&tid=141918&extra=page%3D1%26filter%3Dtypeid%26typeid%3D722

我的笔记:

  1. 【Python】办公篇-《极客Python之效率革命》(小甲鱼) 笔记一
    https://blog.csdn.net/weixin_43210113/article/details/107548337
  2. 【Python】办公篇-《极客Python之效率革命》(小甲鱼) 笔记二
    https://blog.csdn.net/weixin_43210113/article/details/107564712

提示:

  • wb为workbook,wb["sheetname"]表示选中一张worksheet
  • ws为worksheet,ws['A1']表示选中一个单元格
  • 由于视频录制年份较早,现在的语句都会有DeprecationWarning: Call to deprecated function 过时的语句 (Use 推荐的语句).提示,可根据自身需求来使用
  • 由于权限问题,请关闭excel表后再save
  • 有些内容不如在excel表中直接修改,但量大时使用python会很有效

一、P1 使用Python读写Excel文件(1)

openpyxl 模块

[模块档案] openpyxl 模块中文文档(一个读写 EXCEL 文件的模块)
https://fishc.com.cn/thread-101547-1-1.html

安装openpyxl pip3 install openpyxl
测试import openpyxl

创建并保存 Excel 文件

import openpyxl
import datetimewb = openpyxl.Workbook()# 获取活跃的工作表
ws = wb.active# 数据可以直接赋值给单元格
ws['A1'] = 520# 可以整行添加
ws.append([1, 2, 3])# Python 类型将自动转换
ws['A3'] = datetime.datetime.now()# 保存文件
wb.save("demo.xlsx")

将豆瓣 TOP250 电影排行榜保存为 Excel 文件

爬取豆瓣 TOP250 电影排行榜
https://fishc.com.cn/thread-94979-1-1.html
豆瓣电影 Top 250
https://movie.douban.com/top250
我的笔记-【爬虫篇】《极客Python之效率革命》(小甲鱼) b站笔记
https://blog.csdn.net/weixin_43210113/article/details/107505405

import requests
import bs4
import re
import openpyxldef open_url(url):# 使用代理# proxies = {"http": "127.0.0.1:1080", "https": "127.0.0.1:1080"}headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.98 Safari/537.36'}# res = requests.get(url, headers=headers, proxies=proxies)res = requests.get(url, headers=headers)return resdef find_movies(res):soup = bs4.BeautifulSoup(res.text, 'html.parser')# 电影名movies = []targets = soup.find_all("div", class_="hd")for each in targets:movies.append(each.a.span.text)# 评分ranks = []targets = soup.find_all("span", class_="rating_num")for each in targets:ranks.append(each.text)# 资料messages = []targets = soup.find_all("div", class_="bd")for each in targets:try:messages.append(each.p.text.split('\n')[1].strip() + each.p.text.split('\n')[2].strip())except:continueresult = []length = len(movies)for i in range(length):result.append([movies[i], ranks[i], messages[i]])return result# 找出一共有多少个页面
def find_depth(res):soup = bs4.BeautifulSoup(res.text, 'html.parser')depth = soup.find('span', class_='next').previous_sibling.previous_sibling.textreturn int(depth)def save_to_excel(result):wb = openpyxl.Workbook()ws = wb.activews['A1'] = "电影名称"ws['B1'] = "评分"ws['C1'] = "资料"for each in result:ws.append(each)wb.save("豆瓣TOP250电影.xlsx")def main():host = "https://movie.douban.com/top250"res = open_url(host)depth = find_depth(res)result = []for i in range(depth):url = host + '/?start=' + str(25 * i)res = open_url(url)result.extend(find_movies(res))'''with open("test.txt", "w", encoding="utf-8") as f:for each in result:f.write(each)'''save_to_excel(result)if __name__ == "__main__":main()


二、P2 使用Python读写Excel文件(2)

打开 Excel 文件

load_workbook(路径)函数

>>> import openpyxl
>>> wb = openpyxl.load_workbook(r"你存放excel表的路径")
>>> type(wb)
<class 'openpyxl.workbook.workbook.Workbook'>

获取工作表

wb.get_sheet_names()函数已过时请使用wb.sheetnames函数

# 已过时不推荐
>>> wb.get_sheet_names()
['Sheet']
# 请使用这个
>>> print(wb.sheetnames)
['Sheet']

wb.get_sheet_by_name('表名')函数已过时请使用wb["Sheet"]

# 已过时不推荐
>>> ws = wb.get_sheet_by_name('Sheet')
Warning (from warnings module):File "__main__", line 1
DeprecationWarning: Call to deprecated function get_sheet_by_name (Use wb[sheetname]).
# 请使用这个
>>> ws=wb["Sheet"]
>>> ws
<Worksheet "Sheet">

当查找的sheet不存在时会报错提示

创建和删除工作表

wb.create_sheet(index = 插入位置, title = 表名)函数

>>> nws = wb.create_sheet(index = 0, title = "FishC Demo")
# 请使用这个
>>> wb.sheetnames
['FishC Demo', 'Sheet']

wb.remove_sheet(wb["sheet名"])函数已过时请使用wb.remove(wb["sheet名"])函数或del wb["sheet名"]函数

# 已过时不推荐
>>> wb.remove_sheet(wb["FishC Demo"])
Warning (from warnings module):File "__main__", line 1
DeprecationWarning: Call to deprecated function remove_sheet (Use wb.remove(worksheet) or del wb[sheetname]).
# 请使用这个
>>> wb.remove_sheet(wb["FishC Demo"])
>>> del wb["FishC Demo"]>>> print(wb.sheetnames)
['Sheet']

定位单元格

单元格对象,拥有 rowcolumncoordinate 属性,代表单元格的行、列和坐标

>>> c = ws['A2']
>>> c.row
2
>>> c.column
'A'
# 3.7 返回值为1
>>> c.column
1
>>> c.coordinate
'A2'

通过 value 属性可以获取该单元格的值

>>> ws['A2'].value
'肖申克的救赎'
>>> c.value
'肖申克的救赎'

offset(row, column) 函数,定位距离该单元格 rowcolumn 列偏移的另一个单元格

>>> d = c.offset(2, 0)
>>> d.coordinate
'A4'
# 2020年7月24日爬取带的数据阿甘正传排在这个杀手不太冷前了,以实际爬取到的数据为准
>>> d.value
'阿甘正传'

‘AAA’ 是多少?

openpyxl.cell.cellget_column_letter(数字) 方法进行转换成字母,openpyxl.utils.cell.column_index_from_string('字母")方法进行转换成数字。
视频中的 openpyxl.cell.cell.column_index_from_string('JB') 已不适用。

>>> openpyxl.cell.cell.get_column_letter(496)
'SB'
# 已不适用
>>> openpyxl.cell.cell.colcumn_index_from_string('SB')
Traceback (most recent call last):File "<pyshell#40>", line 1, in <module>openpyxl.cell.cell.colcumn_index_from_string('SB')
AttributeError: module 'openpyxl.cell.cell' has no attribute 'colcumn_index_from_string'
# 推荐使用
>>> openpyxl.utils.cell.column_index_from_string('JB')
262

访问多个单元格

先行后列

>>> for each_movie in ws['A2':'B10']:for each_cell in each_movie:print(each_cell.value, end=' ')print('\n')

>>> for each_row in ws.rows:print(each_row[0].value)
>>> for each_row in ws.iter_rows(min_row=2, min_col=1, max_row=4, max_col=2):print(each_row[0].value)肖申克的救赎
霸王别姬
阿甘正传

拷贝工作表

>>> new = wb.copy_worksheet(ws)
>>> wb.save(r"路径")

局部修改

现在要求只修改 Excel 文件的局部数据(例如将《阿甘正传》的评分改为 9.8,《这个杀手不太冷》改为 9.6,《肖申克的救赎》改为 9.7)

import re
import openpyxldef main():data_updates = {"阿甘正传": "9.8","这个杀手不太冷": "9.6","肖申克的救赎": "9.7"}wb = openpyxl.load_workbook("豆瓣TOP250电影.xlsx")ws = wb.activefor each_row in ws.rows:if each_row[0].value in data_updates:each_row[1].value = data_updates[each_row[0].value]wb.save("豆瓣TOP250电影.xlsx")if __name__ == "__main__":main()

三、P3 使用Python读写Excel文件(3)

个性化工作表标签栏

>>> import openpyxl
>>> # 创建工作簿
>>> wb = openpyxl.Workbook()
>>> # 创建工作表
>>> ws1 = wb.create_sheet(title = "小甲鱼")
>>> ws2 = wb.create_sheet(title = "不二如是")
>>> ws3 = wb.create_sheet(title = "风介")
>>> ws4 = wb.create_sheet(title = "小泡")
>>> # 个性化工作表
>>> ws1.sheet_properties.tabColor = "FF0000"
>>> ws2.sheet_properties.tabColor = "00FF00"
>>> ws3.sheet_properties.tabColor = "0000FF"
>>> ws4.sheet_properties.tabColor = "8B008B"
>>> # 保存
>>> wb.save(r"你的路径")

调整行高和列宽

row_dimensions 和 column_dimensions 来实现。

ws.row_dimensions[2].height = 100
ws.column_dimensions['C'].width = 50

高度和宽度的单位是不一样的

合并和拆分单元格

合并

>>> # 合并单元格
>>> ws1.merge_cells('A1:C3')
>>> # 给合并后的单元格赋值
>>> ws1['A1'] = "I love FishC.com!"
>>> wb.save(r"你的路径")

拆分(必须和合并时相同)

>>> # 拆分单元格
>>> ws1.unmerge_cells('A1:C3')
>>> wb.save(r"你的路径")


冻结窗口

指定单元格的上面和左边被冻结住,解冻为freeze_panes 设置为 None 或 ‘A1’ 。。

>>> wb = openpyxl.load_workbook(r"C:\Users\goodb\Desktop\A0101a.xlsx")
>>> ws = wb.active
>>> ws.freeze_panes = 'B8'
>>> wb.save(r"你的路径")

【Python】办公篇-《极客Python之效率革命》(小甲鱼) 笔记一相关推荐

  1. 【爬虫篇】《极客Python之效率革命》(小甲鱼) b站笔记

    〇.前情提要 如果有更新了请提醒我写笔记. 然后突然想起来我冲过小甲鱼的会员,那就跟着小甲鱼学一下吧,后续如果在b站看到了补充的还会再继续写笔记. 参考: [爬虫篇]<极客Python之效率革命 ...

  2. python自学篇十[ 面向对象 (四) :王者荣耀小游戏+模拟一个简单的银行进行业务办理的类]

    python基础系列: python自学篇一[ Anaconda3安装 ] python自学篇二[ pycharm安装及使用 ] python自学篇三[ 判断语句if的使用 ] python自学篇四[ ...

  3. 极客时间-如何设计一个秒杀系统-笔记0到2章

    极客时间-如何设计一个秒杀系统-笔记0到2章 0.开篇词-系统秒杀系统架构设计都有哪些关键点? 1.设计秒杀系统时应该注意的5个架构原则 1.数据要尽量少 2.请求数要尽量少 3.路径要尽量少 4.依 ...

  4. 极客时间_软件设计之美 笔记

    极客时间_软件设计之美 笔记 1.软件设计是什么 写代码前应该有模型设计 比如mvc结构就是一种模型 代码应该有规范, 产品内部原则 避免每个开发按自己的想法实现,有人写rest 有人写mvc 代码模 ...

  5. 凡泰极客 FinClip 技术已实现小程序多端口、全平台运行

    近日,凡泰极客旗下核心产品 FinClip 技术正式宣布支持 Linux 平台运行.此前,FinClip 技术已先后支持 Windows.Mac 等平台运行.至此,FinClip 技术已实现小程序代码 ...

  6. (第二版)零基础入门Python小甲鱼-笔记-第三章-p5

    (第二版)零基础入门Python小甲鱼-笔记-第三章-p5 变量和字符串(下) 上节课讲了有些字符比如换行符.TAB制表符还有单引号.双引号等等...可以通过转义字符来实现,今天来谈谈原始字符串 1. ...

  7. python小甲鱼笔记

    提示:python小甲鱼笔记 文章目录 前言 〇.函数 1.常用基本函数 2.常用表函数 3.常用子函数 4.输入.输出 5.字符串函数 5.快捷键 一.常用函数案例 1.文本输出 2.猜数 if 实 ...

  8. 微信「扫码支付」被诉侵犯专利权;苹果回应“iOS 13 频繁提醒 App 定位”;Python 2 退休 | 极客头条...

    整理 | 屠敏 快来收听极客头条音频版吧,智能播报由标贝科技提供技术支持. 「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注 ...

  9. 马化腾评 Facebook 加密货币;苹果或将 15% 产能移出中国;Python 新版发布 | 极客头条...

    快来收听极客头条音频版吧,智能播报由标贝科技提供技术支持. 「CSDN 极客头条」,是从 CSDN 网站延伸至官方微信公众号的特别栏目,专注于一天业界事报道.风里雨里,我们将每天为朋友们,播报最新鲜有 ...

最新文章

  1. python 闭包变量不允许write,要使用nonlocal
  2. python是不是特别垃圾-深度解析Python垃圾回收机制(超级详细)
  3. 1.10a – 如何设计你的第一个程序
  4. 阿里巴巴与清华大学成立联合实验室,探索下一代人机自然交互
  5. 2017第35周日乱记
  6. 选择湿度传感器注意的若干问题
  7. 百度开发平台提交应用后进行官方认证审核失败?
  8. springmvc如何使用视图解析器_SpringMVC相关面试题
  9. GWT HTML editor
  10. 计算机不能打开管理员用户输入窗口,win10系统管理员账户无法打开某些程序的设置技巧...
  11. Android实现计算器布局(表格布局)
  12. Topology拓扑_8:TopoGeometry构造函数
  13. Dbeaver链接hive和impala
  14. keras简单的实际入门教程
  15. 在img的图片上添加文字
  16. 小新Pro13成功安装黑苹果超详细教程,小白也会安装双系统!
  17. 微信移动UI设计规范
  18. 【供应链】全面分析供应链类型
  19. V-token的技术革新,引领数字化支付热潮
  20. 编写Java程序,实现简单的五子棋博弈游戏(美和易思Java练习习题)

热门文章

  1. 投行 SQL 人的 2018 年终回顾
  2. Skip List——跳表,一个高效的索引技术
  3. java memcached incr_Redis与Memcached的incr/decr差异对比
  4. 固定IP地址及其重启后地址更改的解决方法
  5. throw new Error() 真实的用法和throw error 的方法
  6. 电脑如何分盘、合盘?关于硬盘的分盘,你所不知道的那些事情
  7. 后AlphaFold时代的蛋白质结构预测
  8. 解决小程序-wx.canvasGetImageData()-RGB取色盘苹果手机获取颜色慢问题
  9. 为Termux安装图形化界面
  10. Android开源库V - Layout:淘宝、天猫都在用的UI框架,赶紧用起来吧!