Python办公自动化Day1


文章声明⭐⭐⭐

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

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


实例演示

需求是求出总价、各厂商总金额、总金额,图示如下:
在这里插入图片描述

代码如下:

# 相关导入
import xlrd
from xlutils.copy import copy

# 打开Excel
origin_excel = xlrd.open_workbook('我的PythonExcel.xls')
# 打开工作簿,用来读取数据
origin_sheet = origin_excel.sheet_by_index(0)
# 复制一份(将xlrd变为了xlwt)
new_excel = copy(origin_excel)
# 打开工作簿,用来写数据
new_sheet = new_excel.get_sheet(0)

# 开始计算
# 创建总金额变量
price_all = 0
# 创建存储各厂商总金额的对象
every_price = {}
# origin_sheet 负责读数据(xlrd),new_sheet 负责写数据(xlwt)
for row in range(1, origin_sheet.nrows - 4):  # 第一行不是数据,最后四行也都不是数据,所以排除
    # 计算某样商品的总价
    price = int(origin_sheet.cell_value(row, 3)) * int(origin_sheet.cell_value(row, 4))
    # 写入数据
    new_sheet.write(row, 5, price)
    # 增加总金额
    price_all += price
    # 写入各厂商总金额对象中
    if every_price.get(origin_sheet.cell_value(row, 0)):
        every_price[origin_sheet.cell_value(row, 0)] += price
    else:
        every_price[origin_sheet.cell_value(row, 0)] = price
# 写入各厂商总金额
new_sheet.write(16, 5, every_price['A'])
new_sheet.write(17, 5, every_price['B'])
new_sheet.write(18, 5, every_price['C'])
# 写入总金额
new_sheet.write(19, 5, price_all)

# 保存Excel
new_excel.save('计算成果表.xls')

效果如下:

在这里插入图片描述

  • 17
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

斯丢匹德先森

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值