Openpyxl读取单元格时$被识别为行尾无法获取完整值如何解决?
Openpyxl读取含$符号单元格内容不完整的解决方法
openpyxl本身不会将$识别为行尾终止符,出现该问题的核心原因是你在Excel界面看到的XXXX$YYY是单元格的渲染显示值,而非单元格存储的原始值,cell.value默认返回的是后者。可根据实际场景选择以下方案获取完整内容:
- 方案1:读取格式化显示值(适配自定义数字格式场景)
绝大多数该类问题都是单元格应用了自定义数字格式导致,可通过openpyxl自带的单元格格式化工具直接获取和Excel界面完全一致的显示内容:
from openpyxl import load_workbook from openpyxl.styles.numbers import format_cell wb = load_workbook("你的文件路径.xlsx") ws = wb["你的工作表名"] target_cell = ws["A1"] # 替换为实际单元格坐标 full_content = format_cell(target_cell, target_cell.number_format) print(full_content)
- 方案2:开启富文本读取(适配多样式富文本单元格场景)
如果单元格内容是带不同字体/颜色样式的富文本,默认读取会丢失部分内容,加载工作簿时开启富文本参数即可:
wb = load_workbook("你的文件路径.xlsx", rich_text=True) ws = wb["你的工作表名"] target_cell = ws["A1"] full_content = str(target_cell.value) print(full_content)
- 方案3:开启data_only参数(适配公式结果场景)
如果XXXX$YYY是公式计算得到的结果,默认读取会返回公式本身而非计算值,加载时开启data_only参数即可:
wb = load_workbook("你的文件路径.xlsx", data_only=True) ws = wb["你的工作表名"] print(ws["A1"].value)
额外排查项:如果以上方案都不生效,可先在Excel中打开文件,选中对应单元格复制内容粘贴到纯文本编辑器中,确认完整内容确实存在,排除文件本身单元格内容损坏的问题。
内容的提问来源于stack exchange,提问作者RML
相关产品推荐
相关产品推荐

