Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
1
1-homework-yanjun
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
bonnieyan
1-homework-yanjun
Commits
eeaac984
Commit
eeaac984
authored
6 years ago
by
bonnieyan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
提交作业
parent
d06aa6e4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
191 additions
and
4 deletions
+191
-4
9-homework-yanjun/calculate_salary.py
+94
-3
9-homework-yanjun/excel_operate.py
+1
-1
9-homework-yanjun/my.log
+96
-0
9-homework-yanjun/员工工资计算.xls
+0
-0
No files found.
9-homework-yanjun/calculate_salary.py
View file @
eeaac984
import
xlwt
import
time
import
xlrd
from
xlutils.copy
import
copy
import
logging
logger
=
logging
.
getLogger
()
logger
.
setLevel
(
"DEBUG"
)
#流处理,控制输出到控制台
stream_handle
=
logging
.
StreamHandler
()
#设置文件handler
file_handler
=
logging
.
FileHandler
(
"my.log"
,
mode
=
'a'
,
encoding
=
"utf8"
)
logger
.
addHandler
(
file_handler
)
logger
.
addHandler
(
stream_handle
)
#格式化
formatter
=
logging
.
Formatter
(
fmt
=
'
%(asctime)
s -
%(levelname)
s -
%(message)
s'
)
file_handler
.
setFormatter
(
formatter
)
stream_handle
.
setFormatter
(
formatter
)
class
Worker
():
def
__init__
(
self
,
worker_num
,
worker_name
,
worker_message
,
position_salary
,
start_time
,
end_time
):
...
...
@@ -12,8 +27,84 @@ class Worker():
class
Finace
():
def
calc_salary
(
self
,
worker
):
worker
.
worker_num
def
write_excel
(
list_all
):
book
=
xlwt
.
Workbook
()
sheet
=
book
.
add_sheet
(
'员工工资计算'
)
row0
=
[
'员工编号'
,
'工资结算时间'
,
'员工姓名'
,
'员工基本信息'
,
'岗位'
,
'工资'
,
'说明'
,
'工资总计'
]
#写表头
for
i
in
range
(
len
(
row0
)):
sheet
.
write
(
0
,
i
,
row0
[
i
])
row_num
=
1
for
c
in
list_all
:
col_num
=
0
for
s
in
c
:
sheet
.
write
(
row_num
,
col_num
,
s
)
col_num
+=
1
row_num
+=
1
book
.
save
(
'员工工资计算.xls'
)
def
write_excel_append
(
path
,
listall
):
index
=
len
(
listall
)
# 获取需要写入数据的行数
workbook
=
xlrd
.
open_workbook
(
path
)
# 打开工作簿
worksheet
=
workbook
.
sheet_by_name
(
'员工工资计算'
)
rows_old
=
worksheet
.
nrows
# 获取表格中已存在的数据的行数
new_workbook
=
copy
(
workbook
)
# 将xlrd对象拷贝转化为xlwt对象
new_worksheet
=
new_workbook
.
get_sheet
(
0
)
# 获取转化后工作簿中的第一个表格
for
i
in
range
(
0
,
index
):
for
j
in
range
(
0
,
len
(
listall
[
i
])):
new_worksheet
.
write
(
i
+
rows_old
,
j
,
listall
[
i
][
j
])
# 追加写入数据,注意是从i+rows_old行开始写入
new_workbook
.
save
(
path
)
# 保存工作簿
logger
.
info
(
"xls格式表格【追加】写入数据成功!"
)
def
calc_salary
(
worker
):
list_all
=
[]
list_posi
=
[]
list_sa_base
=
[]
start_sec
=
time
.
mktime
(
time
.
strptime
(
worker
.
start_time
,
'
%
Y-
%
m-
%
d'
))
end_sec
=
time
.
mktime
(
time
.
strptime
(
worker
.
end_time
,
'
%
Y-
%
m-
%
d'
))
worker_time
=
(
int
((
end_sec
-
start_sec
)
/
(
24
*
60
*
60
)))
//
7
logger
.
info
(
worker_time
)
for
l
in
worker
.
position_salary
:
for
key
in
l
.
keys
():
posi
=
key
list_posi
.
append
(
posi
)
for
value
in
l
.
values
():
sa_base
=
int
(
value
)
*
worker_time
list_sa_base
.
append
(
sa_base
)
logger
.
info
(
list_posi
)
logger
.
info
(
list_sa_base
)
s_total
=
0
for
i
in
range
(
len
(
list_posi
)):
list_content
=
[]
list_content
.
append
(
worker
.
worker_num
)
list_content
.
append
(
'2019-1'
)
list_content
.
append
(
worker
.
worker_name
)
list_content
.
append
(
worker
.
worker_message
)
list_content
.
append
(
list_posi
[
i
])
list_content
.
append
(
list_sa_base
[
i
])
list_content
.
append
(
'工资结算4周'
)
s_total
+=
list_sa_base
[
i
]
list_content
.
append
(
s_total
)
list_all
.
append
(
list_content
)
logger
.
info
(
list_all
)
return
list_all
worker
=
Worker
(
1
,
'小A'
,
'住在回龙观'
,
[{
"程序员"
:
2000
},
{
"扫地"
:
1000
}],
'2019-01-01'
,
'2019-01-31'
)
re
=
Finace
.
calc_salary
(
worker
)
print
(
re
)
Finace
.
write_excel
(
re
)
worker
=
Worker
(
1
,
'小B'
,
'居住在天通苑'
,
[{
"程序员"
:
2000
}],
'2019-01-01'
,
'2019-01-31'
)
re
=
Finace
.
calc_salary
(
worker
)
Finace
.
write_excel_append
(
'/home/yanjun/1-homework-yanjun/9-homework-yanjun/员工工资计算.xls'
,
re
)
worker
=
Worker
(
1
,
'小c'
,
'居住在西二旗'
,
[{
"程序员"
:
2000
}],
'2019-01-01'
,
'2019-01-31'
)
re
=
Finace
.
calc_salary
(
worker
)
Finace
.
write_excel_append
(
'/home/yanjun/1-homework-yanjun/9-homework-yanjun/员工工资计算.xls'
,
re
)
worker
=
Worker
(
1
,
'小D'
,
'居住在天通苑'
,
[{
"程序员"
:
2000
}],
'2019-01-01'
,
'2019-01-31'
)
re
=
Finace
.
calc_salary
(
worker
)
Finace
.
write_excel_append
(
'/home/yanjun/1-homework-yanjun/9-homework-yanjun/员工工资计算.xls'
,
re
)
...
...
This diff is collapsed.
Click to expand it.
9-homework-yanjun/excel_operate.py
View file @
eeaac984
...
...
@@ -28,7 +28,7 @@ def write_excel(excel_file: str, sheet_name: str):
return
True
def
read_excel
(
excel_file
:
str
,
sheet_name
:
str
,
row_num
:
int
=
0
,
col_num
:
int
=
0
):
def
read_excel
(
excel_file
:
str
,
sheet_name
:
str
,
row_num
:
int
=
0
,
col_num
:
int
=
0
):
book
=
xlrd
.
open_workbook
(
excel_file
)
sheet
=
book
.
sheet_by_name
(
sheet_name
)
cell
=
sheet
.
cell
(
row_num
,
col_num
)
...
...
This diff is collapsed.
Click to expand it.
9-homework-yanjun/my.log
View file @
eeaac984
...
...
@@ -19,3 +19,99 @@
2019-01-26 20:38:52,573 - INFO - 4->1->9->13
2019-01-26 20:39:34,470 - INFO - 4->5->1->9->13
2019-01-26 20:39:34,470 - INFO - 4->1->9->13
2019-01-27 14:00:18,792 - INFO - 4
2019-01-27 14:00:18,793 - INFO - ['程序员', '扫地']
2019-01-27 14:00:18,793 - INFO - [8000, 4000]
2019-01-27 14:00:18,795 - INFO - 4
2019-01-27 14:00:18,795 - INFO - ['程序员']
2019-01-27 14:00:18,795 - INFO - [8000]
2019-01-27 14:00:18,796 - INFO - xls格式表格【追加】写入数据成功!
2019-01-27 14:03:01,632 - INFO - 4
2019-01-27 14:03:01,632 - INFO - ['程序员', '扫地']
2019-01-27 14:03:01,632 - INFO - [8000, 4000]
2019-01-27 14:03:01,632 - INFO - [[1, '2019-1', '小A', '住在回龙观', '程序员', 8000, '工资结算4周', 8000], [1, '2019-1', '小A', '住在回龙观', '扫地', 4000, '工资结算4周', 12000]]
2019-01-27 14:03:01,633 - INFO - 4
2019-01-27 14:03:01,633 - INFO - ['程序员']
2019-01-27 14:03:01,633 - INFO - [8000]
2019-01-27 14:03:01,633 - INFO - [[1, '2019-1', '小B', '居住在天通苑', '程序员', 8000, '工资结算4周', 8000]]
2019-01-27 14:03:01,634 - INFO - xls格式表格【追加】写入数据成功!
2019-01-27 14:06:16,162 - INFO - 4
2019-01-27 14:06:16,163 - INFO - ['程序员', '扫地']
2019-01-27 14:06:16,163 - INFO - [8000, 4000]
2019-01-27 14:06:16,163 - INFO - [[1, '2019-1', '小A', '住在回龙观', '程序员', 8000, '工资结算4周', 8000], [1, '2019-1', '小A', '住在回龙观', '扫地', 4000, '工资结算4周', 12000]]
2019-01-27 14:06:16,164 - INFO - 4
2019-01-27 14:06:16,164 - INFO - ['程序员']
2019-01-27 14:06:16,164 - INFO - [8000]
2019-01-27 14:06:16,164 - INFO - [[1, '2019-1', '小B', '居住在天通苑', '程序员', 8000, '工资结算4周', 8000]]
2019-01-27 14:06:16,165 - INFO - xls格式表格【追加】写入数据成功!
2019-01-27 14:06:16,166 - INFO - 4
2019-01-27 14:06:16,166 - INFO - ['程序员']
2019-01-27 14:06:16,166 - INFO - [8000]
2019-01-27 14:06:16,166 - INFO - [[1, '2019-1', '小c', '居住在西二旗', '程序员', 8000, '工资结算4周', 8000]]
2019-01-27 14:06:16,167 - INFO - xls格式表格【追加】写入数据成功!
2019-01-27 14:06:16,167 - INFO - 4
2019-01-27 14:06:16,167 - INFO - ['程序员']
2019-01-27 14:06:16,167 - INFO - [8000]
2019-01-27 14:06:16,167 - INFO - [[1, '2019-1', '小D', '居住在望京南', '程序员', 8000, '工资结算4周', 8000]]
2019-01-27 14:06:16,169 - INFO - xls格式表格【追加】写入数据成功!
2019-01-27 14:20:53,686 - INFO - 4
2019-01-27 14:20:53,686 - INFO - ['程序员', '扫地']
2019-01-27 14:20:53,686 - INFO - [8000, 4000]
2019-01-27 14:20:53,686 - INFO - [[1, '2019-1', '小A', '住在回龙观', '程序员', 8000, '工资结算4周', 8000], [1, '2019-1', '小A', '住在回龙观', '扫地', 4000, '工资结算4周', 12000]]
2019-01-27 14:20:53,687 - INFO - 4
2019-01-27 14:20:53,687 - INFO - ['程序员']
2019-01-27 14:20:53,688 - INFO - [8000]
2019-01-27 14:20:53,688 - INFO - [[1, '2019-1', '小B', '居住在天通苑', '程序员', 8000, '工资结算4周', 8000]]
2019-01-27 14:20:53,689 - INFO - xls格式表格【追加】写入数据成功!
2019-01-27 14:20:53,689 - INFO - 4
2019-01-27 14:20:53,689 - INFO - ['程序员']
2019-01-27 14:20:53,689 - INFO - [8000]
2019-01-27 14:20:53,689 - INFO - [[1, '2019-1', '小c', '居住在西二旗', '程序员', 8000, '工资结算4周', 8000]]
2019-01-27 14:20:53,691 - INFO - xls格式表格【追加】写入数据成功!
2019-01-27 14:20:53,691 - INFO - 4
2019-01-27 14:20:53,691 - INFO - ['程序员']
2019-01-27 14:20:53,691 - INFO - [8000]
2019-01-27 14:20:53,691 - INFO - [[1, '2019-1', '小D', '居住在望京南', '程序员', 8000, '工资结算4周', 8000]]
2019-01-27 14:20:53,692 - INFO - xls格式表格【追加】写入数据成功!
2019-01-27 14:21:22,357 - INFO - 4
2019-01-27 14:21:22,357 - INFO - ['程序员', '扫地']
2019-01-27 14:21:22,357 - INFO - [8000, 4000]
2019-01-27 14:21:22,357 - INFO - [[1, '2019-1', '小A', '住在回龙观', '程序员', 8000, '工资结算4周', 8000], [1, '2019-1', '小A', '住在回龙观', '扫地', 4000, '工资结算4周', 12000]]
2019-01-27 14:21:35,774 - INFO - 4
2019-01-27 14:21:35,775 - INFO - ['程序员', '扫地']
2019-01-27 14:21:35,775 - INFO - [8000, 4000]
2019-01-27 14:21:35,775 - INFO - [[1, '2019-1', '小A', '住在回龙观', '程序员', 8000, '工资结算4周', 8000], [1, '2019-1', '小A', '住在回龙观', '扫地', 4000, '工资结算4周', 12000]]
2019-01-27 14:21:35,776 - INFO - 4
2019-01-27 14:21:35,776 - INFO - ['程序员']
2019-01-27 14:21:35,776 - INFO - [8000]
2019-01-27 14:21:35,776 - INFO - [[1, '2019-1', '小B', '居住在天通苑', '程序员', 8000, '工资结算4周', 8000]]
2019-01-27 14:21:35,778 - INFO - xls格式表格【追加】写入数据成功!
2019-01-27 14:21:35,778 - INFO - 4
2019-01-27 14:21:35,778 - INFO - ['程序员']
2019-01-27 14:21:35,778 - INFO - [8000]
2019-01-27 14:21:35,778 - INFO - [[1, '2019-1', '小c', '居住在西二旗', '程序员', 8000, '工资结算4周', 8000]]
2019-01-27 14:21:35,779 - INFO - xls格式表格【追加】写入数据成功!
2019-01-27 14:21:35,779 - INFO - 4
2019-01-27 14:21:35,779 - INFO - ['程序员']
2019-01-27 14:21:35,779 - INFO - [8000]
2019-01-27 14:21:35,779 - INFO - [[1, '2019-1', '小D', '居住在望京南', '程序员', 8000, '工资结算4周', 8000]]
2019-01-27 14:21:35,781 - INFO - xls格式表格【追加】写入数据成功!
2019-01-27 14:23:04,594 - INFO - 4
2019-01-27 14:23:04,594 - INFO - ['程序员', '扫地']
2019-01-27 14:23:04,594 - INFO - [8000, 4000]
2019-01-27 14:23:04,594 - INFO - [[1, '2019-1', '小A', '住在回龙观', '程序员', 8000, '工资结算4周', 8000], [1, '2019-1', '小A', '住在回龙观', '扫地', 4000, '工资结算4周', 12000]]
2019-01-27 14:23:04,596 - INFO - 4
2019-01-27 14:23:04,596 - INFO - ['程序员']
2019-01-27 14:23:04,596 - INFO - [8000]
2019-01-27 14:23:04,596 - INFO - [[1, '2019-1', '小B', '居住在天通苑', '程序员', 8000, '工资结算4周', 8000]]
2019-01-27 14:23:04,653 - INFO - xls格式表格【追加】写入数据成功!
2019-01-27 14:23:04,653 - INFO - 4
2019-01-27 14:23:04,653 - INFO - ['程序员']
2019-01-27 14:23:04,653 - INFO - [8000]
2019-01-27 14:23:04,653 - INFO - [[1, '2019-1', '小c', '居住在西二旗', '程序员', 8000, '工资结算4周', 8000]]
2019-01-27 14:23:04,654 - INFO - xls格式表格【追加】写入数据成功!
2019-01-27 14:23:04,655 - INFO - 4
2019-01-27 14:23:04,655 - INFO - ['程序员']
2019-01-27 14:23:04,655 - INFO - [8000]
2019-01-27 14:23:04,655 - INFO - [[1, '2019-1', '小D', '居住在天通苑', '程序员', 8000, '工资结算4周', 8000]]
2019-01-27 14:23:04,656 - INFO - xls格式表格【追加】写入数据成功!
This diff is collapsed.
Click to expand it.
9-homework-yanjun/员工工资计算.xls
0 → 100644
View file @
eeaac984
File added
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment