我目前正在使用Java中的HSSFWorkbook库生成.xls文件,下游系统正在解析该文件以读取某些数据。最近,我们遇到了一个问题,即文件遇到了缺少预期值的异常,尽管我自己和下游系统都没有进行更改。
现在奇怪的是,如果文件被打开并重新保存,而没有进行任何更改,则文件会被正确解析。保存发生时,我们还会看到文件大小从大约6kb变为26kb。
预计文件大小会发生这种变化吗?
我猜这可能与Excel有关,可以添加额外的空白单元格/空白,这些空白单元格/空白在最初构建文件时不包括在内,但不太确定是什么进行的。我无法访问下游解析器,因此无法准确了解其中发生的情况。
我尝试使用cmp
函数比较Linux中的两个.xls文件,但尚未找到任何有用的结果。我有一些示例文件,其中包含我注意到的行为,但我无法在此处附加这些文件,因此我无法访问任何文件共享网站(已阻止)。
我是否可以使用任何工具来自行运行更好的比较,我应该寻找什么(特殊字符等)可能导致此问题?
当我在Linux上运行以下命令来分析差异时:
cmp -l file1。 file2.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"。 之后有很多行,但我认为可能更好地关注发生的第一个差异。