![[Bug]: ExcelParser drops cells with value 0 or False](https://www.chat-gpts.plus/wp-content/uploads/2026/06/16421-f8e0440e.jpg)
[Bug]: ExcelParser drops cells with value 0 or False
快速结论:当解析包含数值 0 或布尔值 False 的 Excel 单元格时,RAGFlow 的 ExcelParser 会错误地丢弃这些值。优先排查 deepdoc/parser/excel_parser.py 中是否使用了 if not c.value 而非 if c.value is None 来判断空单元格。
问题场景
用户在 RAGFlow 中上传包含数字 0 或 False 值的 .xlsx 文件并进行解析时,发现提取出的文本中缺失了这些单元格内容。例如,Excel 表格一行数据为 [Widget, 0](项目名称 + 数量),解析结果中遗漏了“Quantity: 0”字段。
报错原文
RAGFlowExcelParser.__call__ skips cells whose value is 0 or False because it checks `if not c.value` before adding the cell to the row text.
For a row like:
| Item | Quantity |
| --- | --- |
| Widget | 0 |
The parser drops the `Quantity: 0` field from the extracted text.
原因分析
这是一个逻辑判断错误。在 deepdoc/parser/excel_parser.py 的文本提取路径中,使用 if not c.value 来跳过空单元格。在 Python 中,not 0 和 not False 均返回 True,导致数值 0 和布尔值 False 被错误地当作空值跳过。而该解析器的 html() 路径已经使用了更精确的 if c.value is None 判断,因此未受影响。
环境排查
- RAGFlow workspace code commit ID:
bf18b5926及更早版本 - RAGFlow image version: 从 main 分支构建的版本(
bf18b5926) - 关键文件路径:
deepdoc/parser/excel_parser.py - 触发条件:解析包含数值
0或布尔False值的.xlsx工作簿
解决步骤
- 定位到
deepdoc/parser/excel_parser.py文件中RAGFlowExcelParser.__call__方法的文本提取路径。 - 找到判断空单元格的代码行
if not c.value: continue。 - 可优先尝试:将该行修改为
if c.value is None: continue,以确保只有真正的空值(None)被跳过,数值0和布尔值False得以保留。 - 如果使用最新版本,该问题已在
main分支的#16287PR 中修复,请确保拉取最新代码。 - 如果仍遇到问题,检查是否有其他自定义或分支版本的
excel_parser.py未同步该修复。
验证方法
创建一个包含一行数据的 .xlsx 文件,表头为 Item 和 Quantity,数据行为 Widget 和 0。使用 RAGFlow 解析该文件后,检查提取的文本中是否包含了 Quantity: 0(而非缺失该字段)。若正确包含 0 值,则表示问题已解决。



