Python办公自动化Day1

目录


文章声明⭐⭐⭐

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

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

xlwt创建Excel

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

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

python 复制代码
# 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,内容如如下:
做一个完整的员工表,方便接下来的实例演示:

python 复制代码
# 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

已有的表格内容为:

代码如下:

python 复制代码
# 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=' ')
        

输出结果如下:

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


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

Richie male 21 

Taylor Swift female 34 

Mike male 65 

Nancy female 18

xlutils修改Excel

实例演示,代码如下:

python 复制代码
# 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设置样式

常见的字体样式

实例演示代码如下:

python 复制代码
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')

效果如下:


单元格宽高

实例演示代码如下:

python 复制代码
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')

效果如下:


内容对齐方式

单元格较大时,内容对齐方式默认为左下角:

修改对齐方式,实例演示代码如下:

python 复制代码
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')

效果如下:


设置单元格边框

实例演示代码如下:

python 复制代码
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')

效果如下:


设置背景颜色

实例演示代码如下:

python 复制代码
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')

效果如下:


样式整合起来的写法

实例演示代码如下:

python 复制代码
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')

效果如下:

相关推荐
大帅不是我1 分钟前
Python多进程编程执行任务
java·前端·python
Fu_lucas5 分钟前
Python Logging 模块完全指南
开发语言·python
Eiceblue7 分钟前
Python 在Excel单元格中应用多种字体样式
开发语言·vscode·python·pycharm·excel
Superstarimage2 小时前
使用conda创建python虚拟环境,并自定义路径
windows·python·conda
菜鸡码农,喵。2 小时前
已经装了pygame但pycharm显示没有该模块/软件包无法加载出来下载pygame
python·pycharm·pygame
小羊Linux客栈2 小时前
自动化:批量文件重命名
运维·人工智能·python·自动化·游戏程序
shykevin5 小时前
python开发Streamable HTTP MCP应用
开发语言·网络·python·网络协议·http
我不是程序猿儿5 小时前
【C#】 lock 关键字
java·开发语言·c#
漫路在线6 小时前
JS逆向-某易云音乐下载器
开发语言·javascript·爬虫·python
小辉懂编程6 小时前
C语言:51单片机实现数码管依次循环显示【1~F】课堂练习
c语言·开发语言·51单片机