AttributeError: 'NoneType' object has no attribute 'strftime'
时间: 2023-06-23 10:01:43 浏览: 330
这个错误提示表明,你尝试对一个`None`类型的对象使用`strftime`方法,但是`None`类型没有这个方法,因此出现了错误。这通常是由于日期对象为空引起的。
为了避免这个问题,你可以在比较日期之前,先判断单元格中的值是否为空,如果为空,则跳过当前行,不进行比较。修改后的代码如下:
```
import datetime
data_dict = {}
today = datetime.datetime.now().strftime('%Y/%m/%d')
for row in sheet.iter_rows(min_row=2, min_col=3, max_col=3):
if row[0].value is not None and row[0].value.strftime('%Y/%m/%d') == today:
data_dict[row[0].row] = [cell.value for cell in sheet[row[0].row]]
```
这样就可以避免对空值使用`strftime`方法引起的错误了。
相关问题
if day.strftime("%Y%m%d") not in calendar: ^^^^^^^^^^^^ AttributeError: 'NoneType' object has no attribute 'strftime'
这个错误提示表明你正在尝试对一个NoneType对象使用strftime方法,但是NoneType对象本身没有strftime方法。这通常发生在你尝试对一个空值(None)进行操作而不是有效的日期对象。
要解决这个错误,你需要确保你的日期对象不是空值(None)。可以在调用strftime方法之前添加一些条件来检查日期对象是否存在。例如,你可以使用if语句来检查日期对象是否为None,然后再进行操作,如下所示:
```python
if day is not None:
date_string = day.strftime("%Y%m%d")
if date_string not in calendar:
# 执行你的代码逻辑
else:
# 处理日期对象为空的情况
```
通过这种方式,你会首先检查日期对象是否为None,如果是,则可以根据需要处理空值的情况。如果不是空值,则可以安全地使用strftime方法对日期对象进行格式化操作。
AttributeError: 'int' object has no attribute 'data_type'報這個
抱歉,我之前的回答有误,cell 对象没有 data_type 属性。您可以使用 openpyxl 库中的 is_date_format 方法来判断单元格是否为日期格式,如果是则将日期格式转换为字符串。以下是修改后的代码:
```python
import openpyxl.utils.cell as cell_utils
for row in self.record_sheet.iter_rows(min_row=2, values_only=True):
row_values = []
for cell in row:
if cell is not None:
if cell_utils.is_date_format(cell.number_format): # 判断单元格是否为日期格式
cell_value = cell.value.strftime('%Y-%m-%d %H:%M:%S') # 将日期格式转换为字符串
elif cell.data_type == 'f': # 判断单元格是否为公式
cell_value = cell.value # 获取公式
cell_value = self.record_sheet[cell.coordinate].value # 获取公式计算结果
else:
cell_value = str(cell)
else:
cell_value = ""
row_values.append(cell_value)
if all(not bool(cell) for cell in row_values):
continue
treeview1.insert("", tk.END, values=row_values)
```
同样的,您也可以将相同的代码添加到第二个工作表的 for 循环中。
阅读全文