Python办公自动化Day1

news2025/1/21 15:27:16

目录

  • 文章声明⭐⭐⭐
  • 让我们开始今天的学习吧!
    • xlwt创建Excel
    • xlrd读取Excel
    • xlutils修改Excel
    • xlwt设置样式
      • 常见的字体样式
      • 单元格宽高
      • 内容对齐方式
      • 设置单元格边框
      • 设置背景颜色
      • 样式整合起来的写法


文章声明⭐⭐⭐

  1. 该文章为我(有编程语言基础,非编程小白)的 Python办公自动化自学笔记
  2. 知识来源为 B站UP主(好久没吃肉灬)的Python办公自动化课程视频,归纳为自己的语言与理解记录于此并加以实践
  3. 关于办公自动化,知识基础、概念我都不会记录于此,更多的是记录实践,即以具体实操代码的形式展现给大家
  4. 不出意外的话,我大抵会 持续更新
  5. 想要了解前端开发(技术栈大致有:Vue2/3、微信小程序、uniapp、HarmonyOS、NodeJS、Typescript)与Python的小伙伴,可以关注我!谢谢大家!

让我们开始今天的学习吧!

xlwt创建Excel

名字记忆:xl为Excel表格的一种后缀 + write = xlwt

首先我们先尝试一下基础操作:

# pip install xlwt
import xlwt

# 创建一个Excel表
excel = xlwt.Workbook()

# 创建一个工作簿
sheet = excel.add_sheet('员工表')

# 写入数据到此工作簿,第一个数字为行,第二个数字为列,都是从0开始计算的
sheet.write(0, 0, 'Richie')
sheet.write(2,6,'Taylor Swift')

# 保存此Excel在电脑上
excel.save('我的PythonExcel.xls')

运行代码,会在当前目录生成Excel,内容如如下:
在这里插入图片描述做一个完整的员工表,方便接下来的实例演示:

# pip install xlwt
import xlwt

# 创建一个Excel表
excel = xlwt.Workbook()

# 创建一个工作簿
sheet = excel.add_sheet('员工表')

# 写入数据到此工作簿
sheet.write(0, 0, '员工姓名')
sheet.write(0, 1, '员工性别')
sheet.write(0, 2, '员工年龄')

sheet.write(1, 0, 'Richie')
sheet.write(1, 1, 'male')
sheet.write(1, 2, '21')

sheet.write(2, 0, 'Taylor Swift')
sheet.write(2, 1, 'female')
sheet.write(2, 2, '34')

sheet.write(3, 0, 'Mike')
sheet.write(3, 1, 'male')
sheet.write(3, 2, '65')

sheet.write(4, 0, 'Nancy')
sheet.write(4, 1, 'female')
sheet.write(4, 2, '18')

# 保存此Excel在电脑上
excel.save('我的PythonExcel.xls')

内容如下:
在这里插入图片描述


xlrd读取Excel

名字记忆:xl为Excel表格的一种后缀 + read = xlrd
已有的表格内容为:
在这里插入图片描述
代码如下:

# pip install xlrd
import xlrd

# 打开Excel
excel = xlrd.open_workbook('我的PythonExcel.xls')
# 查询有几个工作簿
print(f'该Excel中有{excel.nsheets}个工作簿')
# 查询所有工作簿的名称
print(f'这些工作簿的名字为:{excel.sheet_names()}')
# 根据索引选择某一个工作簿
sh1 = excel.sheet_by_index(0)
# 根据名字选择某一个工作簿
sh2 = excel.sheet_by_name('员工表')
# 查询工作簿里有几行几列数据
print(f'该工作簿里有{sh1.nrows}{sh1.ncols}列数据')
# 获取单元格的值
print(f'第一行第二列的值为:{sh1.cell_value(0,1)}')  # 直接精准获取值
print(f'第二行第三列的值为:{sh1.cell(1,2).value}')  # 先找到单元格,再value
print(f'第四行第一列的值为:{sh1.row(3)[0].value}')  # 先第四行,再第一列,再value
# 获取整行或整列的数据
print(sh1.row_values(0))  # 获取第一行的数据
print(sh1.col_values(0))  # 获取第一列的数据
# 遍历所有数据
for r in range(sh1.nrows):
    print('\n')
    for c in range(sh1.ncols):
        print(sh1.cell_value(r, c), end=' ')
        

输出结果如下:

该Excel中有1个工作簿
这些工作簿的名字为:['员工表']
该工作簿里有53列数据
第一行第二列的值为:员工性别
第二行第三列的值为:21
第四行第一列的值为:Mike
['员工姓名', '员工性别', '员工年龄']
['员工姓名', 'Richie', 'Taylor Swift', 'Mike', 'Nancy']


员工姓名 员工性别 员工年龄 

Richie male 21 

Taylor Swift female 34 

Mike male 65 

Nancy female 18

xlutils修改Excel

实例演示,代码如下:

# pip install xlutils
import xlrd
from xlutils.copy import copy

# 打开Excel
excel1 = xlrd.open_workbook('我的PythonExcel.xls')
# 复制数据到一个新的Excel,copy()把xlrd对象拷贝转化为xlwt对象
newExcel = copy(excel1)
# 选择工作簿
sheet = newExcel.get_sheet(0)
# 添加一行数据
sheet.write(5, 0, 'Jack')
sheet.write(5, 1, 'male')
sheet.write(5, 2, 98)
# 新增一个工作簿
sheet2 = newExcel.add_sheet('汇总年龄')
# 汇总员工表里的员工年龄之和并放入 汇总年龄 这个工作簿中
age_count = 0
# 先把刚刚加入的新数据年龄加入
age_count += 98
# 再遍历xlrd里的数据
origin_sheet = excel1.sheet_by_index(0)
for r in range(1, origin_sheet.nrows):
    age_count += int(origin_sheet.cell_value(r, 2))
sheet2.write(0, 0, '年龄总计')
sheet2.write(1, 0, age_count)
# 保存这个新Excel文件
newExcel.save('我的PythonExcel2.xls')

于是我们创建了一个新的名叫 “我的PythonExcel2.xls” 的文件,内容如下:
在这里插入图片描述
“汇总年龄” 工作簿也创建了:
在这里插入图片描述

“汇总年龄” 工作簿内容如下:
在这里插入图片描述


xlwt设置样式

常见的字体样式

实例演示代码如下:

import xlwt

# 创建Excel以及工作簿
excel = xlwt.Workbook()
sheet = excel.add_sheet('样式')

# 设置字体样式对象
font_style = xlwt.Font()
# 字体
font_style.name = '微软雅黑'
# 颜色
font_style.colour_index = 2
# 大小
font_style.height = 11 * 20
# 加粗
font_style.bold = True
# 下划线
font_style.underline = True
# 斜体
font_style.italic = True

# 放入总样式对象里
style = xlwt.XFStyle()
style.font = font_style

# 写数据
sheet.write(0, 0, 'Richie')  # 没加样式
sheet.write(0, 1, 'Taylor', style)  # 加了样式

# 保存Excel
excel.save('我的PythonExcel3.xls')

效果如下:
在这里插入图片描述


单元格宽高

实例演示代码如下:

import xlwt

# 创建Excel以及工作簿
excel = xlwt.Workbook()
sheet = excel.add_sheet('样式')

# 设置第一行的单元格高度
sheet.row(0).height_mismatch = True  # 开启设置高度的权限
sheet.row(0).height = 10 * 256
# 设置第一列的单元格宽度
sheet.col(0).width = 20 * 256

# 保存Excel
excel.save('我的PythonExcel3.xls')

效果如下:
在这里插入图片描述


内容对齐方式

单元格较大时,内容对齐方式默认为左下角:
在这里插入图片描述
修改对齐方式,实例演示代码如下:

import xlwt

# 创建Excel以及工作簿
excel = xlwt.Workbook()
sheet = excel.add_sheet('样式')

# 设置第一行的单元格高度
sheet.row(0).height_mismatch = True  # 开启设置高度的权限
sheet.row(0).height = 10 * 256
# 设置第一列的单元格宽度
sheet.col(0).width = 20 * 256
# 设置第二列的单元格宽度
sheet.col(1).width = 20 * 256

# 设置对齐方式
alg = xlwt.Alignment()
alg.horz = 2  # 1为左对齐,2为水平居中,3为右对齐
alg.vert = 1  # 0为上对齐,1为垂直居中,2为下对齐

# 设置样式对象
style = xlwt.XFStyle()
style.alignment = alg

# 写入数据,默认对齐方式
sheet.write(0, 0, 'Richie')
# 写入数据,水平垂直居中的对齐方式
sheet.write(0, 1, 'Taylor',style)

# 保存Excel
excel.save('我的PythonExcel3.xls')

效果如下:
在这里插入图片描述


设置单元格边框

实例演示代码如下:

import xlwt

# 创建Excel以及工作簿
excel = xlwt.Workbook()
sheet = excel.add_sheet('样式')

# 设置单元格边框
border = xlwt.Borders()
# 设置边框样式,值的数字对应怎么样的样式这里不予描述,自行上网查询
border.left = 1
border.right = 2
border.top = 3
border.bottom = 4
# 设置颜色,值的数字对应怎么样的颜色这里不予描述,自行上网查询
border.left_colour = 1
border.right_colour = 2
border.top_colour = 3
border.bottom_colour = 4


# 设置样式对象
style = xlwt.XFStyle()
style.borders = border

# 写入数据,加入样式
sheet.write(1, 1, 'Richie', style)

# 保存Excel
excel.save('我的PythonExcel3.xls')

效果如下:
在这里插入图片描述


设置背景颜色

实例演示代码如下:

import xlwt

# 创建Excel以及工作簿
excel = xlwt.Workbook()
sheet = excel.add_sheet('样式')

# 设置背景颜色
p = xlwt.Pattern()
p.pattern = xlwt.Pattern.SOLID_PATTERN
p.pattern_fore_colour = 2

# 设置样式对象
style = xlwt.XFStyle()
style.pattern = p

# 写入数据,加入样式
sheet.write(1, 1, 'Richie', style)

# 保存Excel
excel.save('我的PythonExcel3.xls')

效果如下:
在这里插入图片描述


样式整合起来的写法

实例演示代码如下:

import xlwt

# 创建Excel以及工作簿
excel = xlwt.Workbook()
sheet = excel.add_sheet('样式')

# 设置样式对象
style = xlwt.easyxf('font: bold on, color_index 4; align: vert center, horiz center')

# 写入数据,加入样式
sheet.write(1, 1, 'Richie', style)

# 保存Excel
excel.save('我的PythonExcel3.xls')

效果如下:
在这里插入图片描述

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

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

相关文章

【滑动窗口】之 长度最小的子数组

209. 长度最小的子数组 暴力循环法&#xff1a; public int minSubArrayLen(int target, int[] nums) {int min Integer.MAX_VALUE;for (int i 0; i < nums.length; i) {int sum nums[i];//只要有个元素 &#xff1e; 目标值 就返回最小长度1if (sum > target) {retur…

react中使用redux最简单最方便的方式,配合rematch简化操作,5分钟学会

react中使用状态管理的方式也很多&#xff0c;比如redux和mobx等&#xff0c;今天这一片就讲一下redux的入门到熟练使用&#xff0c;主要是要理解它redux的组成有哪些&#xff0c;到怎么创建&#xff0c;和组建中怎么使用三个问题。这里先放上官网文档&#xff0c;不理解的地方…

2.苍穹外卖-day02

苍穹外卖-day02 课程内容 新增员工 员工分页查询 启用禁用员工账号 编辑员工 导入分类模块功能代码 功能实现&#xff1a;员工管理、菜品分类管理。 员工管理效果&#xff1a; 菜品分类管理效果&#xff1a; 1. 新增员工 1.1 需求分析和设计 1.1.1 产品原型 一般在做需求分…

在Linux Docker中部署RStudio Server,实现高效远程访问

&#x1f308;个人主页&#xff1a;聆风吟 &#x1f525;系列专栏&#xff1a;网络奇遇记、Cpolar杂谈 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 &#x1f4cb;前言一. 安装RStudio Server二. 本地访问三. Linux 安装cpolar四. 配置RStudio serv…

通过windows cng api 实现rsa非对称加密

参考&#xff1a; 1,使用 CNG 加密数据 - Win32 apps | Microsoft Learn 2,不记得了 &#xff08;下文通过cng api演示rsa加密&#xff0c;不做原理性介绍&#xff09; 相对于aes等对称加密算法&#xff0c;rsa加密算法不可逆性更强。非对称加密在通常情况下&#xff0c;使…

玩转大数据22:常见的关联规则挖掘算法

引言 关联规则挖掘是数据挖掘中的一种重要技术&#xff0c;主要用于发现数据集中项之间的有趣关系。关联规则挖掘在许多领域都有广泛的应用&#xff0c;如市场篮子分析、推荐系统等。常见的关联规则挖掘算法包括Apriori算法和FP-Growth算法。 一、Apriori算法 关联规则挖掘是…

Java中的抽象abstract

抽象abstract 什么是抽象类抽象类的注意事项、特点 使用好处常见应用场景&#xff1a;模版方法设计模式可以使用final关键字修饰模版方法 什么是抽象类 在Java中有一个关键字叫:abstract&#xff0c;它就是抽象的意思&#xff0c;可以用它修饰类、成员方法。abstract修饰类&am…

python读取Excel内容并展示成json

shigen坚持更新文章的博客写手&#xff0c;擅长Java、python、vue、shell等编程语言和各种应用程序、脚本的开发。记录成长&#xff0c;分享认知&#xff0c;留住感动。 伙伴们&#xff0c;又是许久未曾见面了。最近也是在忙着加班&#xff0c;加上没有新技术的输入和产出&…

SpaceDesk如何连接平板/PC(生产力副屏)

1、下载安装 分为安卓端和PC端&#xff0c;两个设备都需要安装对应的软件。 SpaceDesk官网 https://link.zhihu.com/?targethttp%3A//spacedesk.net/ 需要魔法上网。安装过程比较简单&#xff0c;无脑下一步即可。 我已经把安装包准备好了&#xff0c;如果不想自己找&#…

公众号申请已达上限解决方法

一般可以申请多少个公众号&#xff1f;自2018年11月16日起&#xff0c;进行申请上限调整&#xff1a;1、同一个邮箱只能申请1个公众号&#xff1b;2、同一个手机号码可绑定5个公众号&#xff1b;3、同一身份证申请个人类型公众号数量上限为1个&#xff1b;4、同一企业、个体工商…

WebAssembly 的魅力:高效、安全、跨平台(上)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

ElasticSearch学习篇9_文本相似度计算方法现状以及基于改进的 Jaccard 算法代码实现

背景 XOP亿级别题库的试题召回以及搜题的举一反三业务场景都涉及使用文本相似搜索技术&#xff0c;学习此方面技术以便更好的服务于业务场景。 目前基于集合的Jaccard算法以及基于编辑距离的Levenshtein在计算文本相似度场景中有着各自的特点&#xff0c;为了优化具体的计算时…

windos/ubuntu20.4下UE4.27.2像素流送

windows/ubuntu20.4下UE4.27.2像素流送 像素流送技术可以将服务器端打包的虚幻引擎应用程序在客户端的浏览器上运行&#xff0c;用户可以通过浏览器操作虚幻引擎应用程序&#xff0c;客户端无需下载虚幻引擎&#xff0c;本文实现两台机器通过物理介质网线实现虚幻引擎应用程序…

Jenkins Pipeline脚本优化:为Kubernetes应用部署增加状态检测

引言 在软件部署的世界中&#xff0c;Jenkins已经成为自动化流程的代名词。不断变化的技术环境要求我们持续改进部署流程以满足现代应用部署的需要。在本篇博客中&#xff0c;作为一位资深运维工程师&#xff0c;我将分享如何将Jenkins Pipeline进化至不仅能支持部署应用直至R…

【电源专题】Buck电源上电震荡谁的错?

在文章:【电源专题】案例:Buck芯片上电瞬间波形震荡?从别的人案例中来学习软启参数中我们通过别人的文章了解到了Buck芯片上电瞬间波形震荡有几个方法可以解决,但主要还是围绕着软启动参数去学习。因为文章中无法知道编者所用的电源芯片和电路,所以无法进行分析。 最近我…

Mysql之约束下篇

Mysql之约束下篇 自增列(AUTO_INCREMENT)关键字特点和要求添加自增约束删除自增约束Mysql8.0新特性-自增变量的持久化 FOREIGN KEY 约束关键字主表和从表/父表和子表特点添加外键约束约束等级删除外键约束面试问题 DEFAULT约束作用关键字添加默认值约束删除默认值约束 CHECK约束…

Leetcode—445.两数相加II【中等】

2023每日刷题&#xff08;六十七&#xff09; Leetcode—445.两数相加II 实现代码 /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2…

k8s启动docker容器Error: Could not find or load main class ${start-class}报错

前行提要&#xff1a; 今天部署采集点服务&#xff08;docker项目&#xff09;发现报这个错误。 提出假设&#xff1a; 1&#xff0c;配置文件错误&#xff08;工程需要配置的东西比较多&#xff09; 之后开始一一排查&#xff0c;发现配置有问题&#xff0c;但是不是这个错误…

Blazor 混合开发_MAUI+Vue_WPF+Vue

MAUI&#xff0b;Vue 混合开发 背景混合开发的核心为什么必须使用 wwwroot 文件夹放置 Web 项目文件 创建 MAUI 项目创建 wwwroot 文件夹服务注册创建 _import.razor添加 Main.razor 组件修改 MainPage.xaml 文件 创建 WPF 项目创建 wwwroot 文件夹服务注册创建 _import.razor添…

DALL-E:Zero-Shot Text-to-Image Generation

DALL-E 论文是一个文本生成图片模型。 训练分为两个阶段 第一阶段&#xff0c;训练一个dVAE&#xff08;discrete variational autoencoder离散变分自动编码器&#xff09;&#xff0c;其将256 x 256的RGB图片转换为32 x 32的图片token。目的&#xff1a;降低图片的分辨率。图…