我目前正在使用 Java 中的 HSSFWorkbook 库生成一个 .xls 文件,下游系统正在解析该文件以读取一些数据。最近,我们遇到了一个问题,即文件遇到了缺少预期值的异常,尽管我自己和下游系统都没有进行更改。
现在奇怪的是,如果文件被打开并重新保存,而没有进行任何更改,则文件被正确解析。当保存发生时,我们还看到文件大小从大约 6kb 变为 26kb。
文件大小的这种变化是预期的吗?
我猜这可能与 Excel 添加额外的空白单元格/空白有关,这些空白单元格/空白在最初构建文件时不包括在内,但不太确定发生了什么。我无权访问下游解析器,因此无法确切知道那里发生了什么。
我尝试使用该cmp
函数比较 Linux 中的两个 .xls 文件,但没有得出任何有用的发现。我有一些带有我注意到的行为的示例文件,但我无法在此处附加它们,也无法访问任何文件共享网站(被阻止)。
有什么工具可以让我自己进行更好的比较,我应该寻找什么(特殊字符等)可能导致这个问题?
当我在 Linux 上运行以下命令分析差异时:
cmp -l 文件 1。文件2.xls | gawk '{printf "%08X %02X %02X\n", $1, strtonum(0$2), strtonum(0$3)}' > analysis.txt
这是输出的开始:
00000019 3B 3E
00000031 00 32
0000003D 09 FE
0000003E 00 FF
0000003F 00 FF
00000040 00 FF
00000041 01 00
0000004D 0A 31
00000201 52 09
00000202 00 08
00000203 6F 10
00000205 6F 00
00000206 00 06
00000207 74 05
00000209 20 54
0000020A 00 38
0000020B 45 CD
0000020C 00 07
0000020D 6E C9
0000020E 00 C0
0000020F 74 01
00000211 72 06
00000212 00 07
00000213 79 00
00000215 00 E1
00000217 00 02
00000219 00 B0
0000021A 00 04
0000021B 00 C1
0000021D 00 02
00000221 00 E2
格式为“byteLocationOfDiff byteFromFirstFile byteFromSecondFile”。之后有更多的行,但我认为最好关注发生的第一个差异。