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

效果如下:

相关推荐
2301_8050545612 分钟前
Python训练营打卡Day59(2025.7.3)
开发语言·python
lsx20240635 分钟前
CSS 网页布局:从基础到进阶
开发语言
万千思绪37 分钟前
【PyCharm 2025.1.2配置debug】
ide·python·pycharm
蜗牛沐雨40 分钟前
警惕 Rust 字符串的性能陷阱:`chars().nth()` 的深坑与高效之道
开发语言·后端·rust
2401_858286111 小时前
125.【C语言】数据结构之归并排序递归解法
c语言·开发语言·数据结构·算法·排序算法·归并排序
guygg882 小时前
基于matlab的FIR滤波器
开发语言·算法·matlab
双叶8362 小时前
(C++)学生管理系统(正式版)(map数组的应用)(string应用)(引用)(文件储存的应用)(C++教学)(C++项目)
c语言·开发语言·数据结构·c++
微风粼粼2 小时前
程序员在线接单
java·jvm·后端·python·eclipse·tomcat·dubbo
源代码•宸2 小时前
C++高频知识点(二)
开发语言·c++·经验分享
云天徽上2 小时前
【PaddleOCR】OCR表格识别数据集介绍,包含PubTabNet、好未来表格识别、WTW中文场景表格等数据,持续更新中......
python·ocr·文字识别·表格识别·paddleocr·pp-ocrv5