目录
- 文章声明⭐⭐⭐
- 让我们开始今天的学习吧!
- xlwt创建Excel
- xlrd读取Excel
- xlutils修改Excel
- xlwt设置样式
- 常见的字体样式
- 单元格宽高
- 内容对齐方式
- 设置单元格边框
- 设置背景颜色
- 样式整合起来的写法
文章声明⭐⭐⭐
- 该文章为我(有编程语言基础,非编程小白)的 Python办公自动化自学笔记
- 知识来源为 B站UP主(好久没吃肉灬)的Python办公自动化课程视频,归纳为自己的语言与理解记录于此并加以实践
- 关于办公自动化,知识基础、概念我都不会记录于此,更多的是记录实践,即以具体实操代码的形式展现给大家
- 不出意外的话,我大抵会 持续更新
- 想要了解前端开发(技术栈大致有: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个工作簿
这些工作簿的名字为:['员工表']
该工作簿里有5行3列数据
第一行第二列的值为:员工性别
第二行第三列的值为: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')
效果如下: