AttributeError: 'NoneType' object has no attribute 'strftime'
时间: 2023-06-22 10:33:08 浏览: 904
这个错误通常表示您在尝试将`None`类型的对象(例如`None`)应用于日期格式化字符串的`strftime()`方法。这通常是因为您的日期对象为空或未正确加载。请检查您的代码并确保您已正确加载日期对象。
在您的代码中,这可能是由于以下原因之一引起的:
- 您没有正确设置日期对象,或者日期对象为空。
- 日期对象的格式不是`datetime.datetime`类型,因此无法使用`strftime()`方法。
要解决此问题,请确保您正确加载日期对象,并使用`type()`函数检查其类型。如果它不是`datetime.datetime`类型,则需要将其转换为该类型。以下是一个示例代码,它将检查行日期是否为`None`,并在不为空的情况下将其转换为`datetime.datetime`类型:
```
# 获取所有查询条件
date = self.date_entry.get()
name = self.line_entry1.get()
name1 = self.line_entry2.get()
name2 = self.line_entry3.get()
# 查询数据
ws = openpyxl.load_workbook(output_path2).active
rows = ws.iter_rows(min_row=1, values_only=True)
records = []
header = next(rows)
for row in rows:
# 检查行日期是否为空,并转换为 datetime.datetime 类型
if row[2] is not None:
row_date = row[2]
if not isinstance(row_date, datetime.datetime):
row_date = datetime.datetime.strptime(row_date, '%Y/%m/%d')
else:
row_date = None
# 模糊匹配日期
if (not date or (row_date is not None and date in row_date.strftime('%Y/%m/%d'))) and \
(not name or row[5] == name) and \
(not name1 or row[8] == name1) and \
(not name2 or row[6] == name2):
records.append(row)
```
在上面的代码中,我们对行日期进行了额外的检查,并使用`datetime.datetime.strptime()`方法将其转换为`datetime.datetime`类型。我们还在模糊匹配日期之前添加了对`row_date`是否为`None`的检查,以避免出现`NoneType`错误。
阅读全文