又显示total_production_count = sum([worksheet.cell(row=row, column=3).value for row in range(2, worksheet.max_row+1)]) TypeError: unsupported operand type(s) for +: 'int' and 'str'
时间: 2024-01-28 10:04:37 浏览: 167
Course_select.zip_Work It_chart_excel chart_worksheet
这个错误提示是由于 `worksheet.cell(row=row, column=3).value` 返回的值不是数字类型,而是字符串类型。这可能是因为 Excel 中的单元格格式为文本格式,而不是数字格式。
在计算 `total_production_count` 和 `total_qualified_count` 的过程中,我们需要计算生产数量和合格数量的总和,如果其中有一个值是字符串类型,就会出现这个错误。
为了避免这个错误,我们可以在计算总和之前,对值进行类型转换。例如,您可以使用以下代码:
```python
# 计算总生产数量
production_counts = [worksheet.cell(row=row, column=3).value for row in range(2, worksheet.max_row+1)]
production_counts = [int(x) if isinstance(x, (int, float)) else 0 for x in production_counts] # 将非数字类型的值转换为 0
total_production_count = sum(production_counts)
# 计算总合格数量
qualified_counts = [worksheet.cell(row=row, column=worksheet.max_column).value for row in range(2, worksheet.max_row+1)]
qualified_counts = [int(x) if isinstance(x, (int, float)) else 0 for x in qualified_counts] # 将非数字类型的值转换为 0
total_qualified_count = sum(qualified_counts)
```
这段代码会先获取所有生产数量和合格数量的值,并将非数字类型的值转换为 0。然后对这些值进行求和,得到总生产数量和总合格数量。
这样就可以避免类型错误,同时也可以在出现类型错误时忽略当前行的计算,以免影响后续行的计算。
阅读全文