6,116
社区成员
# 报错
Traceback (most recent call last):
File "E:\Anoconda1\Lib\site-packages\openpyxl\descriptors\base.py", line 59, in _convert
value = expected_type(value)
^^^^^^^^^^^^^^^^^^^^
ValueError: invalid literal for int() with base 10: '2.5'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "E:\ProgramData\TCZY\CDB\Meituan\re_built\transactions.py", line 9, in <module>
workbook = load_workbook(file_path)
^^^^^^^^^^^^^^^^^^^^^^^^
File "E:\Anoconda1\Lib\site-packages\openpyxl\reader\excel.py", line 348, in load_workbook
reader.read()
File "E:\Anoconda1\Lib\site-packages\openpyxl\reader\excel.py", line 303, in read
self.read_worksheets()
File "E:\Anoconda1\Lib\site-packages\openpyxl\reader\excel.py", line 237, in read_worksheets
ws_parser.bind_all()
File "openpyxl\\worksheet\\_reader.py", line 465, in openpyxl.worksheet._reader.WorksheetReader.bind_all
File "openpyxl\\worksheet\\_reader.py", line 368, in openpyxl.worksheet._reader.WorksheetReader.bind_cells
File "openpyxl\\worksheet\\_reader.py", line 163, in parse
File "E:\Anoconda1\Lib\site-packages\openpyxl\descriptors\serialisable.py", line 103, in from_tree
return cls(**attrib)
^^^^^^^^^^^^^
File "E:\Anoconda1\Lib\site-packages\openpyxl\worksheet\dimensions.py", line 281, in __init__
self.baseColWidth = baseColWidth
^^^^^^^^^^^^^^^^^
File "E:\Anoconda1\Lib\site-packages\openpyxl\descriptors\base.py", line 71, in __set__
value = _convert(self.expected_type, value)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "E:\Anoconda1\Lib\site-packages\openpyxl\descriptors\base.py", line 61, in _convert
raise TypeError('expected ' + str(expected_type))
TypeError: expected <class 'int'>
你好
错误信息提示在加载 Excel 文件时遇到了问题,特别是在处理工作表维度(如列宽)时,期望得到一个整数但得到了一个不兼容的类型。这通常是因为 Excel 文件本身可能有损坏或者格式不符合 openpyxl 的预期。然而,这个错误在代码执行过程中并没有直接体现(因为它是在 load_workbook 调用时发生的,而你的代码中的异常处理是在遍历单元格数据时),但它导致了 load_workbook 失败,从而没有成功加载工作簿。
数据类型转换错误:
你可以尝试将每个单元格的值转换为整数,但遇到了无法转换的值(如 '2.5'),这导致了 ValueError。然而,这个错误是在尝试加载工作簿失败之后发生的,因为你的代码是在假设工作簿已经成功加载的基础上执行的。
解决步骤:
1.检查 Excel 文件:
确保 Excel 文件没有损坏,格式正确。
检查文件路径是否正确,特别是路径中的日期和数字部分是否有误(如文件名中的 "2023-10-31898736884" 是否应为 "2023-10-31" 后跟其他标识,而不是直接连在一起)。
2.修复或替换 Excel 文件:
如果文件损坏,尝试使用 Excel 修复功能或重新获取文件。
确保文件的扩展名正确(.xlsx)。
3.修改代码以处理文件加载异常:
在尝试加载工作簿时添加异常处理,以便在文件无法加载时给出更清晰的错误信息。
下面的代码请供参考
import pandas as pd
from openpyxl import load_workbook
# 定义 Excel 文件路径
file_path = r"日分成数据_2023-10-01-2023-10-31.xlsx" # 确保路径和文件名正确
try:
# 尝试加载工作簿
workbook = load_workbook(file_path)
sheet = workbook.active
# 读取数据并处理转换
for row in sheet.iter_rows(values_only=True):
for value in row:
try:
# 尝试将值转换为整数
if value is not None: # 检查值是否为 None
converted_value = int(float(value)) # 先转换为浮点数再尝试转换为整数,以处理如 '2.5' 这样的值
print(converted_value)
else:
print("值为 None,跳过转换")
except (ValueError, TypeError):
# 处理转换错误
print(f"无法转换值: {value}")
except Exception as e:
print(f"加载工作簿时出错: {e}")