if not "".join() == "" sheet.append(row)
时间: 2024-05-23 19:10:35 浏览: 11
这段代码有语法错误,无法正确执行。首先,字符串的 join() 方法需要传入一个可迭代对象作为参数,例如列表或元组,来进行字符串拼接。而在这里,传入的参数为空,会导致 TypeError 异常。其次,代码中没有定义变量 row,也无法确定 sheet 变量的来源和类型。因此,无法判断代码的具体功能和正确性。
相关问题
filepath = os.path.join(pinjie, self.la + '.xlsx') for i, sheet_name in enumerate(self.sheet_names): filtered_rows = [] if os.path.exists(filepath): workbook = xl.load_workbook(filepath) sheet = workbook.active today = datetime.datetime.now().strftime('%Y/%m/%d') cell_value = sheet.cell(row=1, column=1).value if cell_value is not None and cell_value != '': for row in sheet.iter_rows(min_row=1): if row[2].value == today and row[8].value == sheet_name: filtered_rows.append(row)在這個代碼添加一個獲取當前時間,在篩選日期后再添加一個篩選第4列早上8點到下午19點的時間
可以在代码中加入以下内容来实现你的需求:
```
import datetime
...
start_time = datetime.time(8, 0, 0) # 早上8点
end_time = datetime.time(19, 0, 0) # 下午7点
...
if row[2].value == today and row[8].value == sheet_name:
row_time = row[3].value.time() # 获取时间,假设时间在第4列
if start_time <= row_time <= end_time:
filtered_rows.append(row)
```
这样就可以在筛选日期的基础上再筛选出时间在早上8点到下午7点之间的数据了。
def load_excel(self, filename, menu_label, selected_label_text): self.la = menu_label self.workbook = xl.load_workbook(filename) self.sheet_names = sorted(self.workbook.sheetnames) # 按工作表名称从小到大排序 self.selected_label.config(text=selected_label_text) # 更新选中标签文本 data4 = self.la if not data4.endswith('.xlsx'): data4 += '.xlsx' # 拼接完整的文件路径 wo=r'\\pcq-smt-ftp01\smt$\CQ SMT-單板測試課\2.生產組\點檢表\點檢歷史資料' filepath = os.path.join(wo, data4) print(filepath) # 清空左侧面板 for widget in self.sheet_frame.winfo_children(): widget.destroy() # 清空右下側面板 for widget in self.unique_listbox.winfo_children(): widget.destroy() # 在右下側添加文本標簽 for i, sheet_name in enumerate(self.sheet_names): label = tk.Label(self.unique_listbox, text=sheet_name) # 打开文件并筛选当天日期 workbook = xl.load_workbook(filepath) for sheet_name in self.sheet_names: sheet = workbook.active today = datetime.datetime.now().strftime('%Y/%m/%d') filtered_rows = [] for row in sheet.iter_rows(min_row=3): if row[2].value == today and row[8].value == sheet_name: filtered_rows.append(row) # 在右下側添加文本標簽 label = tk.Label(self.unique_listbox, text=sheet_name) if filtered_rows: label.config(text=f"{sheet_name} - 已點檢") else: label.config(text=f"{sheet_name} - 未點檢") label.grid(row=i // 5, column=i % 5, sticky="ew", padx=1, pady=1)這句代碼中需要修改為所有工作表名稱去比對
这段代码中需要将所有的工作表名依次与当天日期的點檢记录进行比对,以确定是否已经點檢。在当前的实现中,每次循环都重新打开了文件并进行了比对,这样会浪费大量的时间和资源。应该将打开文件和比对日期的操作放在循环外面,避免重复执行。修改后的代码如下:
```
# 打开文件并筛选当天日期
workbook = xl.load_workbook(filepath)
today = datetime.datetime.now().strftime('%Y/%m/%d')
for i, sheet_name in enumerate(self.sheet_names):
sheet = workbook[sheet_name]
filtered_rows = []
for row in sheet.iter_rows(min_row=3):
if row[2].value == today:
filtered_rows.append(row)
label = tk.Label(self.unique_listbox, text=sheet_name)
if filtered_rows:
label.config(text=f"{sheet_name} - 已點檢")
else:
label.config(text=f"{sheet_name} - 未點檢")
label.grid(row=i // 5, column=i % 5, sticky="ew", padx=1, pady=1)
```
这样修改后,每次循环只需要从workbook中获取对应的sheet对象即可,不需要重新打开文件。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)