Python 獲取工作薄1中所有工作表名,寫入新的工作表1中的第一列,然後打開工作薄2,獲取當前工作表,然後根據當前時間判斷是否是在08:00到19:00之内,如果是就在工作薄2的第7列篩選内容是D的數據,如果不在這個時間内就在工作薄2的第7列篩選内容是N的數據,然後根據篩選的數據再在第3列篩選出當天日期的數據,日期格式為%Y/%m/%d,最後將篩選后的數據的第1列數據複製到新的工作表2中的第一列,最後進行判斷工作表1中第一列數據,有沒有在工作表2中第一列數據出現,如果有就在工作表1相應數據後面寫上已點檢,沒有就寫上未點檢
时间: 2024-03-28 22:42:01 浏览: 44
python利用openpyxl拆分多个工作表的工作簿的方法
5星 · 资源好评率100%
您好,以下是 Python 实现上述需求的代码:
```python
import openpyxl
import datetime
# 打开工作薄1
wb1 = openpyxl.load_workbook('工作薄1.xlsx')
ws1 = wb1.active
# 获取工作薄1中所有工作表名
sheet_names = wb1.sheetnames
# 将工作表名写入新的工作表1中的第一列
for i, sheet_name in enumerate(sheet_names):
ws1.cell(row=1, column=i+1, value=sheet_name)
# 保存工作薄1
wb1.save('工作薄1.xlsx')
# 打开工作薄2
wb2 = openpyxl.load_workbook('工作薄2.xlsx')
ws2 = wb2.active
# 获取当前时间
now = datetime.datetime.now()
# 判断是否在08:00到19:00之间
if now.hour >= 8 and now.hour < 19:
# 在工作薄2的第7列筛选内容是D的数据
filtered_data = filter(lambda x: x[6].value == 'D', ws2.rows)
else:
# 在工作薄2的第7列筛选内容是N的数据
filtered_data = filter(lambda x: x[6].value == 'N', ws2.rows)
# 在筛选后的数据中再筛选出当天日期的数据
today = now.strftime('%Y/%m/%d')
filtered_data = filter(lambda x: x[2].value == today, filtered_data)
# 将筛选后的数据的第1列数据复制到新的工作表2中的第一列
wb3 = openpyxl.Workbook()
ws3 = wb3.active
for i, row in enumerate(filtered_data):
ws3.cell(row=i+1, column=1, value=row[0].value)
# 保存工作表2的复制结果
wb3.save('工作表2复制结果.xlsx')
# 判断工作表1中的工作表名是否在工作表2中的第一列出现
for i, sheet_name in enumerate(sheet_names):
if sheet_name in ws3['A']:
ws1.cell(row=i+1, column=2, value='已点检')
else:
ws1.cell(row=i+1, column=2, value='未点检')
# 保存工作薄1
wb1.save('工作薄1.xlsx')
```
注意事项:
1. 代码中的工作薄文件名需要根据实际情况修改;
2. 代码中的日期格式需要和工作薄2中第3列的日期格式匹配。
阅读全文