Python实例题:Python自动工资条

news2025/5/18 7:46:56

目录

Python实例题

题目

python-automatic-payroll-slipPython 自动生成工资条脚本

代码解释

加载文件:

获取表头:

写入表头:

生成工资条:

保存文件:

运行思路

注意事项

Python实例题

题目

Python自动工资条

python-automatic-payroll-slipPython 自动生成工资条脚本

import openpyxl
from openpyxl.utils import get_column_letter


def generate_payroll_slips(input_file, output_file):
    # 加载输入的 Excel 文件
    wb_input = openpyxl.load_workbook(input_file)
    sheet_input = wb_input.active

    # 创建新的工作簿用于存储工资条
    wb_output = openpyxl.Workbook()
    sheet_output = wb_output.active

    # 获取表头
    header = [cell.value for cell in sheet_input[1]]

    # 写入表头到输出文件
    for col_index, value in enumerate(header, start=1):
        col_letter = get_column_letter(col_index)
        sheet_output[f'{col_letter}1'] = value

    row_num_output = 2
    # 遍历输入文件中的每一行数据(从第二行开始,跳过表头)
    for row in sheet_input.iter_rows(min_row=2, values_only=True):
        # 写入表头分隔行
        for col_index, value in enumerate(header, start=1):
            col_letter = get_column_letter(col_index)
            sheet_output[f'{col_letter}{row_num_output}'] = value
        row_num_output += 1

        # 写入员工工资数据行
        for col_index, value in enumerate(row, start=1):
            col_letter = get_column_letter(col_index)
            sheet_output[f'{col_letter}{row_num_output}'] = value
        row_num_output += 1

        # 写入空行分隔不同员工的工资条
        row_num_output += 1

    # 保存输出的 Excel 文件
    wb_output.save(output_file)
    print(f"工资条已成功生成并保存到 {output_file}")


if __name__ == "__main__":
    input_file = 'salary_info.xlsx'  # 输入的包含员工工资信息的 Excel 文件
    output_file = 'payroll_slips.xlsx'  # 输出的包含工资条的 Excel 文件
    generate_payroll_slips(input_file, output_file)
    

代码解释

  • 加载文件

    • 运用openpyxl.load_workbook函数加载包含员工工资信息的输入 Excel 文件。
    • 创建一个新的工作簿用于存储生成的工资条。
  • 获取表头

    • 读取输入文件的第一行作为表头。
  • 写入表头

    • 把表头写入到输出文件的第一行。

  • 生成工资条

    • 遍历输入文件中除表头外的每一行数据。
    • 为每个员工的工资条先写入表头分隔行。
    • 接着写入该员工的工资数据行。
    • 最后写入一个空行,用于分隔不同员工的工资条。
  • 保存文件

    • 使用wb_output.save方法将生成的工资条保存到指定的输出文件中。

运行思路

  • 安装依赖库:确保已经安装了openpyxl库,若未安装,可使用以下命令进行安装:
pip install openpyxl
  • 准备输入文件:创建一个名为salary_info.xlsx的 Excel 文件,在第一行填写表头(如姓名基本工资奖金扣除项实发工资等),从第二行开始逐行填写每个员工的工资信息。
  • 运行脚本:将上述代码保存为automatic_payroll_slip.py文件,在终端中运行:
python automatic_payroll_slip.py

  • 查看结果:运行脚本后,会在当前目录下生成一个名为payroll_slips.xlsx的文件,打开该文件即可查看生成的工资条。

注意事项

  • 要保证输入文件salary_info.xlsx存在,并且第一行是表头。
  • 若输入文件的路径或文件名需要修改,可在代码中修改input_file变量的值。
  • 生成的工资条文件payroll_slips.xlsx会覆盖同名文件,请谨慎操作。

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

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

相关文章

Function Calling万字实战指南:打造高智能数据分析Agent平台

个人主页:Guiat 归属专栏:科学技术变革创新 文章目录 1. Function Calling:智能交互的新范式1.1 Function Calling 技术概述1.2 核心优势分析 2. 数据分析Agent平台架构设计2.1 系统架构概览2.2 核心组件解析2.2.1 函数注册中心2.2.2 Agent控…

线对板连接器的兼容性问题:为何老旧设计难以满足现代需求?

线对板连接器作为电子设备的核心纽带,正面临前所未有的兼容性挑战。某智能工厂升级生产线时发现,沿用十年的2.54毫米间距连接器,在接入新型工业相机时出现30%的信号丢包率,而切换至0.4毫米超密间距连接器后,数据传输速…

AI517 AI本地部署 docker微调(失败)

本地部署AI 计划使用OLLAMA进行本地部署 修改DNS 访问github 刷新缓存 配置环境变量 OLLAMA安装成功 部署成功 计划使用docker进行微调 下载安装docker 虚拟化已开启 开启上面这些 准备下载ubuntu docker ragflow dify 用git去泡

VR和眼动控制集群机器人的方法

西安建筑科技大学信息与控制工程学院雷小康老师团队联合西北工业大学航海学院彭星光老师团队,基于虚拟现实(VR)和眼动追踪技术实现了人-集群机器人高效、灵活的交互控制。相关研究论文“基于虚拟现实和眼动的人-集群机器人交互方法” 发表于信…

TiDB 中新 Hash Join 的设计与性能优化

原文来源: https://tidb.net/blog/11667c37 本文作者:徐飞 导读 在数据库管理系统(DBMS)中,连接操作(Join)是查询处理的核心环节之一,其性能直接影响到整个系统的响应速度和效率…

1.共享内存(python共享内存实际案例,传输opencv frame)

主进程程序 send.py import cv2 import numpy as np from multiprocessing import shared_memory, resource_trackercap cv2.VideoCapture(0) if not cap.isOpened():print("无法打开 RTSP 流,请检查地址、网络连接或 GStreamer 配置。") else:# 创建共…

网页常见水印实现方式

文章目录 1 明水印技术实现1.1 DOM覆盖方案1.2 Canvas动态渲染1.3 CSS伪元素方案2 暗水印技术解析2.1 空域LSB算法2.2 频域傅里叶变换3 防篡改机制设计3.1 MutationObserver防护3.2 Canvas指纹追踪4 前后端实现对比5 攻防博弈深度分析5.1 常见破解手段5.2 进阶防御策略6 选型近…

【ARM】MDK如何将变量存储到指定内存地址

1、 文档目标 在嵌入式系统开发中,通过MDK(Microcontroller Development Kit)进行工程配置,将指定的变量存储到指定的内存地址上是一项非常重要的技术。这项操作不仅能够满足特定硬件架构的需求,还能优化系统的性能和…

Unity3D仿星露谷物语开发44之收集农作物

1、目标 在土地中挖掘后,洒下种子后逐渐成长,然后使用篮子收集成熟后的农作物,工具栏中也会相应地增加该农作物。 2、修改CropStandard的参数 Assets -> Prefabs -> Crop下的CropStandard,修改其Box Collider 2D的Size(Y…

langchain—chatchat

署部 下载项目 git clone --recursive https://github.com/chatchat-space/Langchain-Chatchat.git 进入目录 cd Langchain-Chatchat anaconda环境准备 创建python环境 conda create -n langchain_env python3.10 -y 激活环境 conda activate langchain_env 验证pyhton环境…

【LeetCode 热题 100】二叉树的最大深度 / 翻转二叉树 / 二叉树的直径 / 验证二叉搜索树

⭐️个人主页:小羊 ⭐️所属专栏:LeetCode 热题 100 很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~ 目录 二叉树的中序遍历二叉树的最大深度翻转二叉树对称二叉树二叉树的直径二叉树的层序遍历将有序数组转换为二叉搜索树验…

关于软件测试开发的一些有趣的知识

文章目录 一、什么是测试?二、为什么要软件测试软件测试三、测试的岗位有哪些四 、软件测试和开发的区别五、走测试岗位为什么还要学开发。4、优秀的测试人员具备的素质我为什么走测试岗位 一、什么是测试? 其实这个问题说简单也不简单,说难…

uni-app 开发HarmonyOS的鸿蒙影视项目分享:从实战案例到开源后台

最近,HBuilderX 新版本发布,带来了令人兴奋的消息——uni-app 现在支持 Harmony Next 平台的 App 开发。这对于开发者来说无疑是一个巨大的福音,意味着使用熟悉的 Vue 3 语法和开发框架,就可以为鸿蒙生态贡献自己的力量。 前言 作…

售前工作.工作流程和工具

第一部分 售前解决方案及技术建议书的制作 售前解决方案编写的标准操作步骤SOP: 售前解决方案写作方法_哔哩哔哩_bilibili 第二部分 投标过程关键活动--商务标技术方案 1. 按项目管理--售前销售项目立项 销售活动和销售线索的跟踪流程和工具 1)拿到标书&#xff…

GPU与NPU异构计算任务划分算法研究:基于强化学习的Transformer负载均衡实践

点击 “AladdinEdu,同学们用得起的【H卡】算力平台”,H卡级别算力,按量计费,灵活弹性,顶级配置,学生专属优惠。 引言 在边缘计算与AI推理场景中,GPU-NPU异构计算架构已成为突破算力瓶颈的关键技…

【滑动窗口】LeetCode 209题解 | 长度最小的子数组

长度最小的子数组 前言:滑动窗口一、题目链接二、题目三、算法原理解法一:暴力枚举解法二:利用单调性,用滑动窗口解决问题那么怎么用滑动窗口解决问题?分析滑动窗口的时间复杂度 四、编写代码 前言:滑动窗口…

Python绘制南丁格尔玫瑰图:从入门到实战

Python绘制南丁格尔玫瑰图:从入门到实战 引言 南丁格尔玫瑰图(Nightingale Rose Chart),也被称为极区图(Polar Area Chart),是一种独特的数据可视化方式。这种图表由弗洛伦斯南丁格尔&#xff…

炼丹学习笔记3---ubuntu2004部署运行openpcdet记录

前言 环境 cuda 11.3 python 3.8 ubuntu2004 一、cuda环境检测 ylhy:~/code_ws/OpenPCDet/tools$ nvcc -V nvcc: NVIDIA (R) Cuda compiler driver Copyright (c) 2005-2021 NVIDIA Corporation Built on Sun_Mar_21_19:15:46_PDT_2021 Cuda compilation tools, release 11.3…

深入解析BGP路由反射器与联邦:突破IBGP全连接限制的两种方案

一、引言:大型BGP网络的挑战 在大型BGP网络架构中,传统的IBGP全连接架构会带来严重的扩展性问题。当网络中存在N台路由器时,需要维护N*(N-1)/2个IBGP连接,这对设备资源和运维管理都是巨大挑战。本文将深入解析两种主流解决方案&a…

QT设置MySQL驱动

QSqlDatabase: QMYSQL driver not loaded QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QODBC QODBC3 QPSQL QPSQL7 第一步:下载MySQL https://dev.mysql.com/downloads/mysql/ 解压缩下载的安装包,其目录结构如下所示: 第二…