python代码300行程序_python小工具,15行代码秒出工资条

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3d1d2VpXzIwMQ==,size_16,color_FFFFFF,t_70#pic_center公司工资条经常使用Excel制作,但是每个月都要做一遍,能不能用python写个程序自动化完成这想工作?当然可以,而且只是分分钟的事!

先来看看原始数据是什么样子:

20200816183728706.png#pic_center最后做成的效果:

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3d1d2VpXzIwMQ==,size_16,color_FFFFFF,t_70#pic_center

使用Excel每次都需要手动修改一遍,对python来说是很简单的,15行代码就可以秒出一个工资条。

一、操作逻辑

逻辑本身非常简单,其实就是在每行之间插入一个空行和一个表头行

二、代码模块

首先是读取Excel表格,读取表格所有内容,python读取excel的方式有很多,最简洁的就是pandas,pandas可以通过read_excel()和to_excel()非常简单的读写excel。读取数据一行搞定:

import pandas

excel_data = pandas.read_excel('E:\\python_practice\\工资表.xlsx') # 读取信息

print(excel_data) # 输出结果

序号 姓名 部门 职务 基本工资 工龄津贴 岗位补贴 奖金 应发 五险一金 实发

0 1 张三 人事部 经理 8600 700 300 5000 14600 1800 12800

1 2 李四 行政部 副经理 8600 700 300 3000 12600 1800 10800

2 3 王五 市场部 经理 8600 700 300 5000 14600 1800 12800

3 4 赵六 市场部 职员 5600 300 100 1000 7000 1300 5700

4 5 孙七 市场部 职员 5600 300 100 1000 7000 1300 5700

插入行其实只是我们人为的动作,python是可以单独插入来实现,但是我们可以逐行写入文件,直接在写文件时多写两行即可,省去了操作数据插入的过程(实际上即便单独插入用pandas也是秒完成的,能少一步就不多一步),只是涉及到逐行插入,逐行写入to_excel()是不行的,可以使用openoyxl,好的,我们先来把重复插入的两行创建出来:

excel_head = list(excel_data.columns)

excel_null = ['', '', '', '', '', '', '', '', '', '', '']

导入 openpyxl,并创建对象

import openpyxl

wb = openpyxl.Workbook() # 创建一个对象

sheet = wb.active

三、循环写入文件

使用双层for循环写数据到文件,只是这里思维逻辑上有一点比较难理解,就是新文件的行序号和源数据的行序号的对应关系,这涉及到取数据赋值,代码如下:

row = 0

for r in range(0, excel_data.shape[0] * 3, 3):

for c in range(excel_data.shape[1]):

sheet.cell(r + 1, c + 1, value=excel_head[c])

sheet.cell(r + 2, c + 1, value=excel_data.iloc[row, c])

sheet.cell(r + 3, c + 1, value=excel_null[c])

row += 1

四、完整代码​

别看上面说了很多,实际代码只需要15行!

import pandas

import openpyxl

excel_data = pandas.read_excel('E:\\青岛慧涵信息科技有限公司\\工资表.xlsx') # 读取信息

excel_head = list(excel_data.columns)

excel_null = ['', '', '', '', '', '', '', '', '', '', '']

wb = openpyxl.Workbook() # 创建一个对象

sheet = wb.active

row = 0

for r in range(0, excel_data.shape[0] * 3, 3):

for c in range(excel_data.shape[1]):

sheet.cell(r + 1, c + 1, value=excel_head[c])

sheet.cell(r + 2, c + 1, value=excel_data.iloc[row, c])

sheet.cell(r + 3, c + 1, value=excel_null[c])

row += 1

wb.save('E:\\青岛慧涵信息科技有限公司\\工资表-xg.xlsx')

五、其他设置

目前处理完成的文件格式使用的时默认格式,并没有使用对齐方式,本身工资条也没必要太花哨的格式,如果需要,也不要紧,pandas也可以满足你任意格式设置!这里就不展开了。只是这是源代码,如果是给非IT人员使用,那就使用 pyinstall打包个exe文件,那都不是事!

原文链接:https://blog.csdn.net/wuwei_201/article/details/108040661

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值