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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/513114.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

全链路压测体系建设方案的思考与实践

简介: 在阿里淘宝双11 的过程中,长期以来都是在生产环节做全链路压测的,通过实践我们发现在生产环境中做压测,实际上会和一个 IT 组织的结构、成熟度、流程等紧密相关,所以我们把全链路压测从简单的制作范围内脱离出来…

工业互联网标识解析企业节点_丰尚公司获批建设国家工业互联网标识解析二级节点...

11月12日,从江苏省工业和信息化厅获悉,丰尚公司获批建设国家工业互联网标识解析二级节点!本次获批的节点是:丰尚云行业工业互联网标识解析二级节点,主要应用于饲料、粮油、食品加工等领域。依托丰尚公司行业多年来智能…

低代码发展系列专访之三:低代码平台会成为企业数字化基础设施么?

话题: 低代码专访前言:2019年开始,低代码爆火。有人认为它是第四代编程语言,有人认为它是开发模式的颠覆,也有人认为是企业管理模式的变革……有很多声音,社区讨论很热烈。CSDN随后展开低代码平台产品系列活…

html5media 网页播放视频,html5media 在IE8播放视频黑屏

(以下是我做的笔记)使用html5media.js的时候官网提示你只需要引入这个js就行了但是实际使用中发现不管是本地文件协议还是http协议在ie8下都无法打开视频或音频报的错都是无法找到/scripts/flowplayer.swf这个文件但是flowplayer.js这个库也是存在的,这个库是配合fl…

Flink+Hologres亿级用户实时UV精确去重最佳实践

简介: FlinkHologres亿级用户实时UV精确去重最佳实践 UV、PV计算,因为业务需求不同,通常会分为两种场景: 离线计算场景:以T1为主,计算历史数据实时计算场景:实时计算日常新增的数据&#xff0…

layui表单加文件 php_layui框架实现文件上传及TP3.2.3(thinkPHP)对上传文件进行后台处理操作示例...

本文实例讲述了layui框架实现文件上传及TP3.2.3对上传文件进行后台处理操作。分享给大家供大家参考,具体如下:layui框架是1.0.9版本。。首先html页面代码如下:js代码如下:layui.use(upload, function (){var upload layui.upload…

如何评估Serverless服务能力,这份报告给出了40条标准

简介: 如今,已经有评测机构给出了40条标准来对Serverless的服务能力进行评估,这些评估细则既是技术生态繁荣发展的一种表现,也可以作为新进入者评估Serverless落地成效的一种参考依据。 编者按:两年前,我们…

Redis 分布式锁的正确实现原理演化历程与 Redisson 实战总结

作者 | 码哥来源 | 码哥字节❝可能是最完善的 Redis 分布式锁原理与实战总结,建议收藏。Redis 分布式锁使用 SET 指令就可以实现了么?在分布式领域 CAP 理论一直存在。分布式锁的门道可没那么简单,我们在网上看到的分布式锁方案可能是有问题的…

OceanBase时序数据库CeresDB正式商用 为用户提供安全可靠的数据存储管理服务

简介: OceanBase完成OLAP和OLTP双重能力并行后,向数据管理领域多模方向迈出第一步。 近日,在数据库OceanBase3.0峰会上,OceanBase CEO杨冰宣布首个时序数据库产品CeresDB正式商用。该数据库将为用户提供安全可靠的数据查询和存储…

python if not a_python --- if not

python if not判断是否为None的情况if not xif x is Noneif not x is Noneif x is not None是最好的写法,清晰,不会出现错误,以后坚持使用这种写法。使用if not x这种写法的前提是:必须清楚x等于None, False, 空字符串""…

python shell运行当前程序、可以按下_Python下调用Linux的Shell命令的方法

有时候难免需要直接调用Shell命令来完成一些比较简单的操作,比如mount一个文件系统之类的。那么我们使用Python如何调用Linux的Shell命令?下面来介绍几种常用的方法: 1. os 模块 1.1. os模块的exec方法族 Python的exec系统方法同Unix的exec系…

html伸缩布局,CSS3 伸缩布局(一)

CSS3引入了一种新的布局模式——Flexbox布局,即伸缩布局盒模型(Flexible Box),用来提供一个更加有效的方式制定、调整和分布一个容器里项目布局,即使它们的大小是未知或者动态的,这里简称为Flex。Flexbox布局常用于设计比较复杂的…

从0开始:500行代码实现 LSM 数据库

简介: LSM-Tree 是很多 NoSQL 数据库引擎的底层实现,例如 LevelDB,Hbase 等。本文基于《数据密集型应用系统设计》中对 LSM-Tree 数据库的设计思路,结合代码实现完整地阐述了一个迷你数据库,核心代码 500 行左右&#…

从 Docker 的信号机制看容器的优雅停止

作者 | Addo Zhang来源 | 云原生指北有太多的文章介绍如何运行容器,然而如何停止容器的文章相对少很多。根据运行的应用类型,应用的停止过程非常重要。如果应用要写文件,停止前要保证正确刷新数据并关闭文件;如果是 HTTP 服务&…

axios链接带参数_axios常见传参方式

1:get请求一般发送请求是这么写axios.get(/user?id12345&nameuser).then(function (res) {console.log(res);}).catch(function (err) {console.log(err);});但是为了方便全局统一调用封装的axiosaxios.get(/user, { //params参数必写 , 如果没有参数传{}也可以params: {i…

使用 Arthas 排查开源 Excel 组件问题

简介: 有了实际的使用之后,不免会想到,Arthas 是如何做到在程序运行时,动态监测我们的代码的呢?带着这样的问题,我们一起来看下 Java Agent 技术实现原理。 背景介绍 ​ 项目中有使用到 com.github.dream…

如何选择python书籍_关于 Python 的经典入门书籍有哪些?

展开全部 关于Python,是最近最火最的编程语言e68a843231313335323631343130323136353331333365643631,挺多人都在学习的,关于它的入门书籍,我大概推荐以下几本: 首先我介绍的是《Python基础教程(第2版修订版)》&#x…

echarts 折线图 html模板,设置ECharts折线图的提示框

回调函数回调函数格式:(params: Object|Array, ticket: string, callback: (ticket: string, html: string)) > string第一个参数 params 是 formatter 需要的数据集。格式如下:{componentType: series,// 系列类型seriesType: string,// 系列在传入的…

“融合、智能、绿色”施耐德电气线上工博以全生命周期解决方案助推数字化

原定于12月1-5日在上海举办的第23届中国国际工业博览会因为疫情再次延期。不必翘首等待,施耐德电气将以线上云展厅的形式如期与您见面,为工业用户呈现一场以“绿色智能制造,共塑可持续未来”为主题的云端盛宴。凭借在绿色智能制造领域的丰富实…

运维更简单、更智能,让运维人不再 “拼命”

简介: 云原生智能运维解决方案,利用大数据为企业日常运维服务,通过可观测数据,融合智能告警与响应中枢,结合机器学习的方法进一步解决自动化运维所未解决的问题,让运维更简单、更智能。 在90%的科幻片中 万…