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')

效果如下:

相关推荐
不去幼儿园40 分钟前
【MARL】深入理解多智能体近端策略优化(MAPPO)算法与调参
人工智能·python·算法·机器学习·强化学习
Ajiang28247353042 小时前
对于C++中stack和queue的认识以及priority_queue的模拟实现
开发语言·c++
幽兰的天空2 小时前
Python 中的模式匹配:深入了解 match 语句
开发语言·python
Theodore_10225 小时前
4 设计模式原则之接口隔离原则
java·开发语言·设计模式·java-ee·接口隔离原则·javaee
网易独家音乐人Mike Zhou5 小时前
【卡尔曼滤波】数据预测Prediction观测器的理论推导及应用 C语言、Python实现(Kalman Filter)
c语言·python·单片机·物联网·算法·嵌入式·iot
安静读书5 小时前
Python解析视频FPS(帧率)、分辨率信息
python·opencv·音视频
----云烟----7 小时前
QT中QString类的各种使用
开发语言·qt
lsx2024067 小时前
SQL SELECT 语句:基础与进阶应用
开发语言
小二·7 小时前
java基础面试题笔记(基础篇)
java·笔记·python
开心工作室_kaic7 小时前
ssm161基于web的资源共享平台的共享与开发+jsp(论文+源码)_kaic
java·开发语言·前端