Python 獲取工作薄1中所有工作表名,寫入新的工作表1中的第一列,然後打開工作薄2,獲取當前工作表,然後根據當前時間判斷是否是在08:00到19:00之内,如果是就在工作薄2的第7列篩選内容是D的數據,如果不在這個時間内就在工作薄2的第7列篩選内容是N的數據,然後根據篩選的數據再在第3列篩選出當天日期的數據,日期格式為%Y/%m/%d,最後將篩選后的數據的數據複製到新的工作表2中的第一列,最後進行判斷工作表1中第一列數據,有沒有在工作表2中第一列數據出現,如果有就在工作表1相應數據後面寫上已點檢,沒有就寫上未點檢
时间: 2024-03-28 10:42:01 浏览: 61
好的,这是一个比较复杂的需求,需要使用 Python 操作 Excel 文件。下面是一个示例代码,你可以根据自己的需求进行修改:
```python
import openpyxl
import datetime
# 打开工作薄1
wb1 = openpyxl.load_workbook('工作薄1.xlsx')
# 获取所有工作表名,并写入新的工作表1的第一列
ws1 = wb1.create_sheet('Sheet1', 0)
for sheetname in wb1.sheetnames:
ws1.cell(row=1, column=wb1.sheetnames.index(sheetname) + 1).value = sheetname
# 打开工作薄2
wb2 = openpyxl.load_workbook('工作薄2.xlsx')
ws2 = wb2.active
# 根据当前时间判断筛选条件
now = datetime.datetime.now()
if now.hour >= 8 and now.hour < 19:
filter_value = 'D'
else:
filter_value = 'N'
# 根据筛选条件和日期筛选数据,并复制到新的工作表2的第一列
ws2_filtered = []
for row in ws2.iter_rows(min_row=2):
if row[6].value == filter_value and row[2].value.date() == now.date():
ws2_filtered.append(row[0].value)
wb3 = openpyxl.Workbook()
ws3 = wb3.active
for i in range(len(ws2_filtered)):
ws3.cell(row=i+1, column=1).value = ws2_filtered[i]
# 判断工作表1中的工作表名是否出现在工作表2中的第一列,如果是则在工作表1相应数据后面写上已点检,否则写上未点检
for i in range(1, ws1.max_column+1):
sheetname = ws1.cell(row=1, column=i).value
if sheetname in ws3['A']:
ws1.cell(row=1, column=i).value = '已点检'
else:
ws1.cell(row=1, column=i).value = '未点检'
# 保存文件
wb1.save('工作薄1.xlsx')
wb3.save('工作薄2筛选结果.xlsx')
```
这段代码中,我们使用了 openpyxl 库来操作 Excel 文件,具体实现过程如下:
1. 首先打开工作薄1,并创建一个新的工作表1。
2. 遍历工作薄1中的所有工作表名,将其写入新的工作表1的第一列。
3. 打开工作薄2,并根据当前时间判断筛选条件。
4. 根据筛选条件和日期筛选工作薄2中的数据,并将其复制到一个新的工作表3中。
5. 遍历工作表1中的所有工作表名,判断其是否出现在工作表3的第一列中,如果是则在工作表1相应数据后面写上已点检,否则写上未点检。
6. 最后保存工作薄1和工作薄2筛选结果。
阅读全文