“如何将 Excel 考勤数据转换为特定的数据库插入格式?”
**我 Excel 中的数据如下所示:
**
这是数据格式
I **需要将其转换为适合数据库插入的格式,如下所示:
**
我想要的数据
将 Excel 考勤数据转换为特定数据库插入格式的 Python (Django) 代码示例
1. 安装必要的库
pip install pandas openpyxl
2. 读取 Excel 数据
import pandas as pd
# 使用 pandas 读取 Excel 文件
df = pd.read_excel("考勤数据.xlsx", header=1)
# 将 "日期" 列转换为日期时间格式
df['日期'] = pd.to_datetime(df['日期'])
3. 数据转换和格式化
from django.db import models
class Attendance(models.Model):
employee_id = models.IntegerField()
date = models.DateField()
in_time = models.TimeField(null=True)
out_time = models.TimeField(null=True)
status = models.CharField(max_length=20)
# 创建一个空列表来存储转换后的数据
attendance_data = []
# 遍历每一行数据
for index, row in df.iterrows():
# 获取员工 ID
employee_id = row['员工 ID']
# 遍历每一列(从第三列开始,因为前两列是 "员工 ID" 和 "日期")
for col_index in range(2, len(df.columns), 2):
# 获取日期和时间
date = row['日期']
in_time = row.iloc[col_index] if not pd.isna(row.iloc[col_index]) else None
out_time = row.iloc[col_index + 1] if not pd.isna(row.iloc[col_index + 1]) else None
# 确定状态
if in_time and out_time:
status = "Present"
elif in_time:
status = "Left Early"
else:
status = "Absent"
# 将数据添加到列表中
attendance_data.append(
Attendance(
employee_id=employee_id,
date=date,
in_time=in_time,
out_time=out_time,
status=status
)
)
4. 批量插入数据库
# 使用 Django ORM 批量创建记录
Attendance.objects.bulk_create(attendance_data)
代码解释:
-
使用
pandas
库读取 Excel 数据,并将其存储在 DataFrame 中。 - 使用循环遍历每一行数据,并提取员工 ID、日期、时间和状态等信息。
- 使用条件语句根据时间信息确定状态。
-
将提取的数据存储在一个列表中,并使用
Attendance
模型进行格式化。 -
最后,使用
bulk_create()
方法将列表中的数据批量插入到数据库中。
注意:
- 这段代码只是一个示例,需要根据的实际情况修改代码,例如修改 Excel 文件名、数据库模型等。
- 可以根据需要修改代码中的逻辑,例如添加数据验证、错误处理等功能。
希望这段代码可以帮助将 Excel 考勤数据转换为 Django 数据库可以接受的格式。
标签:python,django From: 78777258