用python实现自动填数生成表格v1.0
程序员文章站
2022-03-30 11:24:51
先简单描述一下需求,是这样,有时候人事部门需要对着同样的一张表录入数据,比如说员工退休表,这样的表通常是一张excel表格,由于退休员工有多个,那么这样的表肯定就要经常录入了。录入之后由于excel是独立分散的,并不便于后续的数据的查找、管理等。同时,每个退休员工都要录入一张表的话,有时候工作量很大,也容易出错。这样的业务需求其实是很多的,比如生成每个学生独立的成绩单等等。那么,有没有什么办法比较好解决呢?当然是有,而且思路是很简单的。首先先把所有待处理的数据填放在一个数据源的excel表格里面,再...
先简单描述一下需求,是这样,有时候人事部门需要对着同样的一张表录入数据,比如说员工退休表,这样的表通常是一张excel表格,由于退休员工有多个,那么这样的表肯定就要经常录入了。录入之后由于excel是独立分散的,并不便于后续的数据的查找、管理等。同时,每个退休员工都要录入一张表的话,有时候工作量很大,也容易出错。
这样的业务需求其实是很多的,比如生成每个学生独立的成绩单等等。
那么,有没有什么办法比较好解决呢?当然是有,而且思路是很简单的。首先先把所有待处理的数据填放在一个数据源的excel表格里面,再分别制作一个模板和一个填入位置的excel。然后用python去读取数据源、模板和填入位置,然后复制模板并且按照填入位置用数据源表格里面的每一行表格逐一生成一个个的处理后的结果表即可了。
先上代码:
from openpyxl import Workbook
from openpyxl import load_workbook
import os
import datetime
import shutil
def now(year=True,month=True,day=True,hour=True,minute=True,second=True):
def complete(x):
return '0' + str(x) if x<10 else str(x)
d = datetime.datetime.now()
result = ''
if year:
result += str(d.year) + '-'
if month:
result += complete(d.month) + '-'
if day:
result += complete(d.day) + ' '
if hour:
result += complete(d.hour) + '-'
if minute:
result += complete(d.minute) + '-'
if second:
result += complete(d.second) + '-'
return result[:-1]
path = os.getcwd()
def run():
print(now()+' 开始任务,请稍候...')
if not os.path.exists(os.getcwd() + '\\' + '模板.xlsx'):
print('丢失模板.xlsx,请设置好文件再运行...')
return
template_name = os.getcwd() + '\\' + '模板.xlsx'
if not os.path.exists(os.getcwd() + '\\' + '数据源.xlsx'):
print('丢失模板.xlsx,请设置好文件再运行...')
return
data_sheet = load_workbook(os.getcwd() + '\\' + '数据源.xlsx').active
if not os.path.exists(os.getcwd() + '\\' + '填入位置.xlsx'):
print('丢失模板.xlsx,请设置好文件再运行...')
return
location_sheet = load_workbook(os.getcwd() + '\\' + '填入位置.xlsx').active
lc = []
for column in range(1,location_sheet.max_column+1):
lc.append(str(location_sheet.cell(2,column).value).upper())
outputfolder = 'output ' + now()
if not os.path.exists(os.getcwd() + '\\' + outputfolder):
os.mkdir(os.getcwd() + '\\' + outputfolder)
for row in range(2,data_sheet.max_row+1):
targetname = os.getcwd() + '\\' + outputfolder + '\\' + str(data_sheet.cell(row,1).value) +'.xlsx'
shutil.copy(template_name,targetname)
target = load_workbook(targetname)
target_sheet = target.active
for i in range(0,len(lc)):
target_sheet[lc[i]] = data_sheet.cell(row,i+1).value
target.save(targetname)
print(now()+' 任务完成...')
# except:
# print('您的模板、数据源、填入位置可能填写有误,出现异常了,请好好检查再重新运行...')
run()
print('请输入任意键退出...')
input()
demo文件在这里:https://download.csdn.net/download/sinolzeng/15432505
本文地址:https://blog.csdn.net/sinolzeng/article/details/113972040