python代码300行程序_python小工具,15行代码秒出工资条
公司工資條經(jīng)常使用Excel制作,但是每個(gè)月都要做一遍,能不能用python寫個(gè)程序自動(dòng)化完成這想工作?當(dāng)然可以,而且只是分分鐘的事!
先來看看原始數(shù)據(jù)是什么樣子:
最后做成的效果:
使用Excel每次都需要手動(dòng)修改一遍,對(duì)python來說是很簡單的,15行代碼就可以秒出一個(gè)工資條。
一、操作邏輯
邏輯本身非常簡單,其實(shí)就是在每行之間插入一個(gè)空行和一個(gè)表頭行
二、代碼模塊
首先是讀取Excel表格,讀取表格所有內(nèi)容,python讀取excel的方式有很多,最簡潔的就是pandas,pandas可以通過read_excel()和to_excel()非常簡單的讀寫excel。讀取數(shù)據(jù)一行搞定:
import pandas
excel_data = pandas.read_excel('E:\\python_practice\\工資表.xlsx') # 讀取信息
print(excel_data) # 輸出結(jié)果
?
序號(hào) 姓名 部門 職務(wù) 基本工資 工齡津貼 崗位補(bǔ)貼 獎(jiǎng)金 應(yīng)發(fā) 五險(xiǎn)一金 實(shí)發(fā)
0 1 張三 人事部 經(jīng)理 8600 700 300 5000 14600 1800 12800
1 2 李四 行政部 副經(jīng)理 8600 700 300 3000 12600 1800 10800
2 3 王五 市場部 經(jīng)理 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
插入行其實(shí)只是我們?nèi)藶榈膭?dòng)作,python是可以單獨(dú)插入來實(shí)現(xiàn),但是我們可以逐行寫入文件,直接在寫文件時(shí)多寫兩行即可,省去了操作數(shù)據(jù)插入的過程(實(shí)際上即便單獨(dú)插入用pandas也是秒完成的,能少一步就不多一步),只是涉及到逐行插入,逐行寫入to_excel()是不行的,可以使用openoyxl,好的,我們先來把重復(fù)插入的兩行創(chuàng)建出來:
excel_head = list(excel_data.columns)
excel_null = ['', '', '', '', '', '', '', '', '', '', '']
導(dǎo)入 openpyxl,并創(chuàng)建對(duì)象
import openpyxl
wb = openpyxl.Workbook() # 創(chuàng)建一個(gè)對(duì)象
sheet = wb.active
三、循環(huán)寫入文件
使用雙層for循環(huán)寫數(shù)據(jù)到文件,只是這里思維邏輯上有一點(diǎn)比較難理解,就是新文件的行序號(hào)和源數(shù)據(jù)的行序號(hào)的對(duì)應(yīng)關(guān)系,這涉及到取數(shù)據(jù)賦值,代碼如下:
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
四、完整代碼?
別看上面說了很多,實(shí)際代碼只需要15行!
import pandas
import openpyxl
excel_data = pandas.read_excel('E:\\青島慧涵信息科技有限公司\\工資表.xlsx') # 讀取信息
excel_head = list(excel_data.columns)
excel_null = ['', '', '', '', '', '', '', '', '', '', '']
wb = openpyxl.Workbook() # 創(chuàng)建一個(gè)對(duì)象
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')
五、其他設(shè)置
目前處理完成的文件格式使用的時(shí)默認(rèn)格式,并沒有使用對(duì)齊方式,本身工資條也沒必要太花哨的格式,如果需要,也不要緊,pandas也可以滿足你任意格式設(shè)置!這里就不展開了。只是這是源代碼,如果是給非IT人員使用,那就使用 pyinstall打包個(gè)exe文件,那都不是事!
原文鏈接:https://blog.csdn.net/wuwei_201/article/details/108040661
總結(jié)
以上是生活随笔為你收集整理的python代码300行程序_python小工具,15行代码秒出工资条的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 重装系统怎么分区 重装系统如何进行磁盘分
- 下一篇: python复制列表元素_Python学