私は現在、Java の HSSFWorkbook ライブラリを使用して .xls ファイルを生成しています。これは、ダウンストリーム システムが解析して一部のデータを読み取ります。最近、私自身も下流のシステムも変更を加えていないにもかかわらず、期待値が欠落しているという例外がファイルに発生するという問題に遭遇しました。
奇妙なことに、ファイルを開いて再保存すると、何も変更せずにファイルが正しく解析されます。また、保存が行われると、ファイル サイズが約 6kb から 26kb に変化します。
このファイル サイズの変更は予想されますか?
ファイルが最初に作成されたときに含まれていない余分な空白セル/空白をExcelに追加することと関係があると思いますが、何が起こっているのかよくわかりません. 下流のパーサーにアクセスできないので、そこで何が起こっているのか正確にはわかりません。
関数を使用して Linux で 2 つの .xls ファイルを比較してみましたcmp
が、有用な結果は得られませんでした。注目している動作のサンプル ファイルがいくつかありますが、ここに添付できず、ファイル共有 Web サイトにアクセスできません (ブロックされています)。
自分でより良い比較を実行するために使用できるツールはありますか? また、この問題を引き起こす可能性のあるもの (特殊文字など) を探す必要がありますか?
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」です。その後もたくさんの行がありますが、最初に発生する違いに焦点を当てた方が良いと思います。