【发布时间】:2016-06-26 00:14:39
【问题描述】:
我用 .NET/C# 编写了一个 Excel 解析器。它利用 System.XML 中的 XMLReader 类,效果很好。但是我有一个奇怪的错误,其中一个空单元格作为字符串“1074”出现。如果您在 GUI 中查看 Excel 文件,则单元格为空。但是,如果您解压缩文件,它会为同一单元格显示以下内容。
<c r="Y311" s="1" t="s"><v>1074</v></c>
这个问题在以下情况下反复出现:
- 它只出现在这一列(Y 列)
- 仅当字段为空时
- 仅在电子表格上的 Y311 之后
- 总是用“1074?”表示
因为 XML 表示那里有一个值,所以当 XMLReader 到达电子表格的那个部分时,它会将值解析为“1074”而不是一个空单元格。
另外,在 Y311 之前,所有空单元格都具有以下 XML 格式(当然是正确的):
<c r="Y300" s="1"/>
然后没有<v></v> 属性,因为单元格是空的。这就是所有空单元格应该的显示方式。
知道为什么其中一些单元格填充“1074”,即使它们应该是空的?
【问题讨论】:
-
也许单元格值真的是 1074,但是在Excel中查看时由于某种原因它们被隐藏了?我知道单元格是“空的”,但是如果你在 Excel 中将单元格光标放在它上面,公式栏中会显示什么?有条件格式吗?单元格是否包含带有
=if(...)的公式? -
感谢您的想法。我已清除所有格式并验证没有公式。该值仍然是 1074。
-
通过找到其中一个幻像并删除上下所有行以及左右所有列,将其保留在 A1 处,构建一个最小版本的单单元格电子表格。然后看看 XML。
-
我试一试,看看它是否显示什么。