Python办公之Excel篇

1.准备环境

Python版本:3.6.5

IDE集成开发环境:pycharm

Python库选择:openpyxl

openpyxl操作的excel文件以xlsx结尾。

基础命令

查看 Python 版本

python --version

查看 pip 版本

pip --version

安装openxlsx

 pip install openpyxl -i https://pypi.tuna.tsinghua.edu.cn/simple/

2.打开保存

使用 openpyxl 创建,并保存一个 excel 文件

from openpyxl import Workbookwb = Workbook()
ws = wb.active
print(ws.title)wb.save(r"C:\Users\Dell\Desktop\PDF\test.xlsx")

打开刚才保存的文件

from openpyxl import Workbook, load_workbookwb = load_workbook(r"C:\Users\Dell\Desktop\PDF\test.xlsx")
ws = wb.active
print(ws.title)

3.操作工作表

创建

ws1 = wb.active
# 查看当前工作表名
print(ws1.title)
# 查看所有的工作表名
# print(wb.get_sheet_names())
# 查看所有的工作表名
print(wb.sheetnames)ws2 = wb.create_sheet('Sheet2', 1)
ws3 = wb.create_sheet('Sheet3', 2)print(wb.sheetnames)ws4 = wb['Sheet3']
print(ws4.title)

运行后,控制台打印如下结果

Sheet
['Sheet']
['Sheet', 'Sheet2', 'Sheet3']
Sheet3

移动

from openpyxl import Workbookwb = Workbook()ws1 = wb.active
# 查看当前工作表名
print(ws1.title)
# 查看所有的工作表名
# print(wb.get_sheet_names())
# 查看所有的工作表名
print(wb.sheetnames)ws2 = wb.create_sheet('Sheet2', 1)
ws3 = wb.create_sheet('Sheet3', 2)# move_sheet移动工作表
# 参数offset代表偏移值,-1向前移动一个位置,1代表向后移动一个位置,以此类推。
wb.move_sheet(ws3, -1);# del wb['Sheet3']print(wb.sheetnames)

运行后,控制台打印如下结果,Sheet3移动到了Sheet2前面

Sheet
['Sheet']
['Sheet', 'Sheet3', 'Sheet2']

删除

del wb['Sheet3']

4.访问单元格

写入单元格的值

from openpyxl import Workbookwb = Workbook()
ws = wb.activews['a6'] = '池田依来沙'
wb.save("test.xlsx")

修改单元格的值

from openpyxl import Workbookwb = Workbook()
ws = wb.active# ws['a6'] = '池田依来沙'# cell方法的入参
# 譬如6就是row,代表第几行
# 譬如1就是column,代表第几列
cell = ws.cell(6, 1, "Malena")cell.value = 'morgan'
print(cell.value)
wb.save("test.xlsx")
from openpyxl import Workbookwb = Workbook()
ws = wb.active# ws['a6'] = '池田依来沙'# cell方法的入参
# 譬如6就是row,代表第几行
# 譬如1就是column,代表第几列
cell = ws.cell(6, 1, "Malena")cell.value = 'morgan'
print(cell.value)
# coordinate 代表单元格的坐标,譬如 A6
print(cell.coordinate)
# row,代表第几行
print(cell.row)
# column,代表第几列
print(cell.column)
# col_idx,代表第几列
print(cell.col_idx)
# 第几列,用字母表示,譬如第一列为A
print(cell.column_letter)wb.save("test.xlsx")

循环遍历,以及打印单元格

from openpyxl import Workbookwb = Workbook()
ws = wb.activex = 1
for i in range(1, 11):for j in range(1, 6):ws.cell(i, j, x)x += 1
# 打印出A列到C列
print(ws["a:c"])
# 打印出第1行到第5行
print(ws["1:5"])
# 打印出a1到c4
print(ws["a1:c4"])
# 打印出第1行
print(ws["1"])
# 打印出字母C列表
print(ws["c"])
from openpyxl import Workbookwb = Workbook()
ws = wb.active# ws['a6'] = '池田依来沙'# cell方法的入参
# 譬如6就是row,代表第几行
# 譬如1就是column,代表第几列
# cell = ws.cell(6, 1, "Malena")
#
# cell.value = 'morgan'
# print(cell.value)
# # coordinate 代表单元格的坐标,譬如 A6
# print(cell.coordinate)
# # row,代表第几行
# print(cell.row)
# # column,代表第几列
# print(cell.column)
# # col_idx,代表第几列
# print(cell.col_idx)
# # 第几列,用字母表示,譬如第一列为A
# print(cell.column_letter)x = 1
for i in range(1, 11):for j in range(1, 6):ws.cell(i, j, x)x += 1for cells in ws["a1:c4"]:for cell in cells:print(cell)print(cell.value)

5.操作单元格

from openpyxl import Workbook
wb = Workbook()
ws = wb.active
x = 1
for i in range(1, 11):for j in range(1, 11):ws.cell(i, j, x)x +=1# 合并单元格 merge_cells 方法
ws.merge_cells("b2:d4")
# 取消合并 unmerge_cells 方法
ws.unmerge_cells("b2:d4")# 插入列,入参两个,分别代表从第几列开始,插入几列
ws.insert_cols(2, 3)
# 插入行,入参两个,分别代表从第几行开始,插入几行
ws.insert_rows(1, 2)
# 删除列,入参两个,分别代表从第几列开始,删除几列
ws.delete_cols(6, 2)
# 删除行,入参两个,分别代表从第几行开始,删除几行
ws.delete_rows(6, 3)
# 移动单元格,入参三个:选中的单元格,上下移动(正数为下,负数为上),左右移动(正数为右,负数为左)
ws.move_range("c4:e5", 2, -2)wb.save("test.xlsx")

6.使用公式

from openpyxl import Workbook
from openpyxl.formula.translate import Translator
from openpyxl.utils import FORMULAEwb = Workbook()
ws = wb.activeprint(len(FORMULAE))
print('SUM' in FORMULAE)ws.append(["价格1", "价格2", "求和", "平均值"])
ws.append([95,27])
ws.append([48,31])
ws.append([11,23])# 价格1  价格2    求和 平均值
# 95   27
# 48   31
# 11   23# 求和
ws["c2"] = "=SUM(A2,B2)"
# 平均值
ws["d2"] = "=AVERAGE(A2,B2)"# 翻译 Translator 方法ws["c3"] = Translator(formula="=SUM(A2,B2)", origin="c2").translate_formula("c3")
ws["c4"] = Translator(formula="=SUM(A2,B2)", origin="c2").translate_formula("c4")ws["d3"] = Translator(formula="=AVERAGE(A2,B2)", origin="d2").translate_formula("d3")
ws["d4"] = Translator(formula="=AVERAGE(A2,B2)", origin="d2").translate_formula("d4")# 价格1  价格2    求和 平均值
# 95   27     122    61
# 48   31     79 39.5
# 11   23     34 17# 循环遍历
for cell in ws["c3:c4"]:print(cell)
# 打印得到一个元组,例如:(<Cell 'Sheet'.C3>,)cell[0].value = Translator(formula="=SUM(A2,B2)", origin="c2").translate_formula(cell[0].coordinate)wb.save("test.xlsx")

7.设置样式

from openpyxl import Workbook
from openpyxl.styles import Font, Alignmentwb = Workbook()
ws = wb.activews["a1"] = "池田依来沙"f = Font(name="微软雅黑", size=42, color="F56C6C", bold=True, italic=True, strike=True, underline="double")
ws["a1"] .font = f# 设置行高
ws.row_dimensions[2].height = 100
# 设置列宽
ws.column_dimensions["B"].width = 50# 水平和垂直的布局位置,旋转,是否需要换行,是否自动适配缩小,缩进的值
a = Alignment(horizontal="left", vertical="top", text_rotation=0, wrap_text=True, shrink_to_fit=False, indent=0)
ws["a1"].alignment = a;wb.save("test.xlsx")

8.过滤和排序

from openpyxl import Workbookwb = Workbook()
ws = wb.activerows = [['名称', '颜值', '身材', '价值'],['mila', '80', '90', '99'],['malena', '80', '90', '96'],['morgan', '100', '90', '99'],['sf', '80', '20', '97'],['ac', '30', '90', '92'],
]for row in rows:ws.append(row)# 设置过滤范围
ws.auto_filter.ref = "a1:d7"# 过滤方法 add_filter_column 入参:第几列(从2开始),过滤条件
ws.auto_filter.add_filter_column(0, ["mila", "malena"])
# 排序方法 入参: 范围,排序方式(False升序,True倒序)
ws.auto_filter.add_sort_condition("c2:d6", True)wb.save('test.xlsx')

注意,add_filter_column和add_sort_condition方法并不会直接执行排序,需要打开excel文件后,在筛选和排序上点击确认才能真正的执行。

通过安装第三方库,譬如pandas可以直接执行排序和筛选的操作

安装

pip install pandas 

pandas 的使用

import pandas as pd
df = pd.read_excel('test.xlsx', sheet_name="Sheet")
# ascending True代表升序 ,False代表倒序
df_value = df.sort_values(by=["颜值","身材"], ascending=True)writer = pd.ExcelWriter("test2.xlsx")
df_value.to_excel(writer,sheet_name="Sheet2", index=False)
writer.save()

9.插入图表

“https://openpyxl.readthedocs.io/en/stable/charts/introduction.html”)

from openpyxl import Workbook
from openpyxl.chart import LineChart, Referencewb = Workbook()
ws = wb.active# 准备数据
rows = [['月份', '桃子', '西瓜', '龙眼'],[1, 38, 28, 29],[2, 52, 21, 35],[3, 39, 20, 69],[4, 51, 29, 41],[5, 29, 39, 31],[6, 30, 41, 39],
]
for row in rows:ws.append(row)# 创建图表
c1 = LineChart()
c1.title = "折线图"  # 标题
c1.style = 13  # 样式
c1.y_axis.title = '销量'  # Y轴
c1.x_axis.title = '月份'  # X轴# 选择数据范围
data = Reference(ws, min_col=2, min_row=1, max_col=4, max_row=7)
c1.add_data(data, titles_from_data=True)# 线条样式
s0 = c1.series[0]
s0.marker.symbol = "triangle"  # triangle为三角形标记, 可选circle、dash、diamond、dot、picture、plus、square、star、triangle、x、auto
s0.marker.graphicalProperties.solidFill = "FF0000"  # 填充颜色
s0.marker.graphicalProperties.line.solidFill = "0000FF"  # 边框颜色
# s0.graphicalProperties.line.noFill = True  # 改为True则隐藏线条,但显示标记形状s1 = c1.series[1]
s1.graphicalProperties.line.solidFill = "00AAAA"
s1.graphicalProperties.line.dashStyle = "sysDot"  # 线条点状样式
s1.graphicalProperties.line.width = 80000  # 线条大小,最大20116800EMUss2 = c1.series[2]  # 采用默认设置
s2.smooth = True  # 线条平滑ws.add_chart(c1, "A8")  # 图表位置wb.save("line.xlsx")

10.只读只写

读写大文件,使用只读只写模式

只读模式

只读取数值用于其他数据分析,不改变和保存。

from openpyxl import load_workbook# 加载Excel文件时使用read_only指定只读模式
wb = load_workbook(filename='large_file.xlsx', read_only=True)
ws = wb['big_data']# 可以正常读取值
for row in ws.rows:for cell in row:print(cell.value)# 注意:读取完之后需要手动关闭避免内存泄露
wb.close()

只写模式

可以在创建的时候指定为只写模式以便提高性能,不管文件有多大,都可以把内存保持在10M以下。

from openpyxl import Workbook
from openpyxl.cell import WriteOnlyCell
from openpyxl.comments import Comment
from openpyxl.styles import Fontwb = Workbook(write_only=True)  # 创建工作簿时指定只写模式
ws = wb.create_sheet()  # 需要通过create_sheet创建一个sheet# 可以正常保存数据
for _ in range(100):ws.append([i for i in range(200)])  # 只能通过append写# 如果需要保留公式、注释等操作,可以使用WriteOnlyCell
cell = WriteOnlyCell(ws, value="冰冷的希望")
cell.font = Font(name='黑体', size=15)
cell.comment = Comment(text="这是注释", author="pan")ws.append([cell])wb.save('openpyxl/test.xlsx')

如果你对Python感兴趣,想要学习python,这里给大家分享一份Python全套学习资料,都是我自己学习时整理的,希望可以帮到你,一起加油!

😝有需要的小伙伴,可以点击下方链接免费领取或者V扫描下方二维码免费领取🆓
Python全套学习资料

在这里插入图片描述

1️⃣零基础入门

① 学习路线

对于从来没有接触过Python的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
在这里插入图片描述

② 路线对应学习视频

还有很多适合0基础入门的学习视频,有了这些视频,轻轻松松上手Python~
在这里插入图片描述

③练习题

每节视频课后,都有对应的练习题哦,可以检验学习成果哈哈!
在这里插入图片描述

2️⃣国内外Python书籍、文档

① 文档和书籍资料

在这里插入图片描述

3️⃣Python工具包+项目源码合集

①Python工具包

学习Python常用的开发软件都在这里了!每个都有详细的安装教程,保证你可以安装成功哦!
在这里插入图片描述

②Python实战案例

光学理论是没用的,要学会跟着一起敲代码,动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。100+实战案例源码等你来拿!
在这里插入图片描述

③Python小游戏源码

如果觉得上面的实战案例有点枯燥,可以试试自己用Python编写小游戏,让你的学习过程中增添一点趣味!
在这里插入图片描述

4️⃣Python面试题

我们学会了Python之后,有了技能就可以出去找工作啦!下面这些面试题是都来自阿里、腾讯、字节等一线互联网大厂,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
在这里插入图片描述
在这里插入图片描述

5️⃣Python兼职渠道

而且学会Python以后,还可以在各大兼职平台接单赚钱,各种兼职渠道+兼职注意事项+如何和客户沟通,我都整理成文档了。
在这里插入图片描述

上述所有资料 ⚡️ ,朋友们如果有需要的,可以扫描下方👇👇👇二维码免费领取🆓
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/213943.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

9.静态路由

静态路由 中小型网络都会用到&#xff0c;防火墙核心交换机用的很多&#xff0c;一般是用在出口 路由表&#xff1a;路由器用来转发数据包唯一的依据 NextHop下一跳 Static静态路由需要手动设置 ip route-static 目标网段 掩码 下一跳例如&#xff1a;ip route-static 192…

QT讲程序打包成安装包让任何人可以使用

&#x1f482; 个人主页:pp不会算法v &#x1f91f; 版权: 本文由【pp不会算法v】原创、在CSDN首发、需要转载请联系博主 &#x1f4ac; 如果文章对你有帮助、欢迎关注、点赞、收藏(一键三连)和订阅专栏哦 文章目录 1、release模式下编译2、windeploy 打包发布3、使用inno setu…

node.js express cors解决跨域

目录 什么是跨域 示例 postman请求 前端请求 cors中间件解决跨域 流程 配置cors参数 什么是跨域 跨域&#xff08;Cross-Origin&#xff09;是指在 Web 开发中&#xff0c;当一个网页的源&#xff08;Origin&#xff09;与另一个网页的源不同时&#xff0c;就发生了跨域…

手把手教你反编译小程序

本次实验环境 操作系统: win10 10.0.19042 node: v14.17.0 微信开发者工具: Stable 1.05.2110290 前期准备 在电脑端安装模拟器工具&#xff0c;这里以夜神模拟器为例&#xff0c; 在模拟器中安装微信&#xff1a;用于微信打开小程序时加载小程序包。在模拟器中文件管理器&…

论文笔记:A review on multi-label learning

一、介绍 传统的监督学习是单标签学习&#xff0c;但是现实中一个实例可能对应多个标签。这篇文章介绍了多标签分类的定义和评价指标、多标签学习的算法还有其他相关的任务。 二、问题相关定义 2.1 多标签学习任务 假设 X R d X R^d XRd&#xff0c;表示d维的输入空间&am…

日本服务器:确保其稳定性的几个要点

​  在租用日本服务器时&#xff0c;用户们大多一定会关注它的稳定性&#xff0c;其实这些顾及都是正常的。毕竟&#xff0c;网站要想正常运行&#xff0c;保障服务器稳定是关键。本文将讨论有关如何保障日本服务器稳定性的一些有用技巧&#xff0c;希望对您有所帮助。 1.注重…

SpringBoot 启动加载器解析

计时器介绍 启动加载器实战 实现方式1 实现CommandLineRunner接口重写run方法通过Order进行排序 示例: Component Order(1) public class FirstCommandlineRunner implements CommandLineRunner {Overridepublic void run(String... args) throws Exception {System.out.pr…

一篇上手机器学习

一、上手机器学习的几个阶段 上手机器学习&#xff0c;第一步当然是看完我的这篇文章啦~&#xff0c;然后就按以下步骤来就可以了&#xff1a; 学习Python编程语言&#xff1a;Python是一种易于学习的高级编程语言&#xff0c;广泛应用于机器学习领域。你可以通过学习Python的…

第三节、项目支付功能实战-微信支付平台接入流程,小程序账号注册、商户注册

简介 本篇介绍小程序的注册流程、商户平台的注册流程、以及小程序和商户平台如何进行绑定。 微信小程序注册 由于项目中使用了小程序进行支付&#xff0c;所以首先来注册小程序。小程序注册网站如下&#xff1a;小程序注册地址 小程序账号注册 1、链接页面点击“前往注册”…

carla安装中的问题

1、carla carla安装完后&#xff0c;需要使用python调用API去更换地图&#xff0c;增加车辆等 使用Python调用API过程中可能会报错&#xff1a; 报错1&#xff1a;carla API&#xff08;Carla包&#xff09;版本不对 **解决方法&#xff1a;**需要将这个目录下的三个文件拷…

数学建模算法

算法部分 1. 评价类模型2. TOPSIS3. 线性规划4. 聚类分析5. 预测模型6. 拉伊达准则(对异常值进行剔除)7. 数据拟合8. 图论代码练习1. 模拟圆周率2. 斐波那契数列3. 四只鸭子落在一个圆中概率4. 方程2: y" uy y,初值y(0) 1,y(0) 0 算法讲解 matlab代码大全 1. 评价类模型…

【Python】修改pip 默认安装位置

使用pip安装的时候&#xff0c;一般是默认安装在c盘里的。这样做很容易会让c盘的文件堆满。那么如何让pip安装的包放入d盘呢&#xff1f; 查看pip默认安装的位置 在cmd里输入python -m site&#xff0c;这里可以看到&#xff0c;安装包会默认下载到c盘中 从这里可以看到&am…

【Spring教程15】Spring框架实战:详解解读AOP的工作流程和AOP的核心概念

目录 1 AOP工作流程2 AOP核心概念 欢迎大家回到《 Java教程之Spring30天快速入门》&#xff0c;本教程所有示例均基于Maven实现&#xff0c;如果您对Maven还很陌生&#xff0c;请移步本人的博文《 如何在windows11下安装Maven并配置以及 IDEA配置Maven环境》&#xff0c;本文…

如何使用cpolar+Inis在Ubuntu系统快速搭建本地博客网站公网可访问

文章目录 前言1. Inis博客网站搭建1.1. Inis博客网站下载和安装1.2 Inis博客网站测试1.3 cpolar的安装和注册 2. 本地网页发布2.1 Cpolar临时数据隧道2.2 Cpolar稳定隧道&#xff08;云端设置&#xff09;2.3.Cpolar稳定隧道&#xff08;本地设置&#xff09; 3. 公网访问测试总…

AspNetCore 中使用 Knife4jUI 更加友好的Swagger界面

&#x1f680;介绍 aspnetcore.knife4j是一个基于.NET Core平台的Swagger UI库&#xff0c;它提供了API文档的生成和管理功能。这个库的前身是swagger-bootstrap-ui&#xff0c;在Java项目中广泛使用&#xff0c;由于其优秀的界面和易用性被许多开发者所推崇。现在&#xff0c…

LV.13 D2 开发板启动流程 学习笔记

一、开发板启动过程 EMMC&#xff1a;相当于电脑的外存&#xff0c;断电不丢失 开发板上电后首先运行SOC内部iROM中固化的代码(BL0)&#xff0c;这段代码先对基本的软硬件环境(时钟等...)进行初始化&#xff0c;然后再检测拨码开关位置获取启动方式&#xff0c;然后再将对应存储…

基于SSM+MySQL学生宿舍管理系统的设计与实现(源码+数据库+文档)

摘 要 近年来&#xff0c;随着计算机技术的不断发展和运用&#xff0c;许多实际问题都得到了较好地解决。随着现代社会对企业经营的需求日益增长&#xff0c;企业的无纸办公也逐渐得到了推广。本学生宿舍管理系统的设计开发&#xff0c;目标就是解决宿舍管理复杂的人为管理&a…

[23] Self-conditioned Image Generation via Generating Representations

[paper | code] 用生成对象本身作为控制信号&#xff0c;实现无条件图像生成。训练阶段。Step1&#xff1a;用预训练模型&#xff08;例如&#xff1a;Moco v3&#xff09;提取生成对象的特征编码&#xff1b;Step2&#xff1a;基于特征编码&#xff0c;训练一个扩散模型RDM&a…

pycharm手动安装包

1.下载对应的包 TTS PyPI 2.手动解压&#xff0c;找到文件放到pycharm对应项目的lib文件夹中 以TTS包为例&#xff0c;找到下载并解压的包中的2个文件&#xff0c;一个名称一个info结尾 3.放到项目的lib文件夹中 eg&#xff1a;路径&#xff1b;C:\doc\myProject\speaker\venv…

Android View的 getHeight 和 getMeasuredHeight 的区别

前言 先简单复习一下Android View 的 绘制顺序&#xff1a; 1、onMeasure&#xff08;测量&#xff09;&#xff0c;先根据构造器传进来的LayoutParams&#xff08;布局参数&#xff09;&#xff0c;测量view宽高。 2、onLayout&#xff08;布局&#xff09;&#xff0c;再根…