You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何zip压缩包解压后的相同文件会出现字节数组不一致问题?

问题根因

你用Assertions.assertArrayEquals对比XLSX全量字节的校验方式本身不适用于该场景,出现字节不一致但内容正常的核心原因有3个:

  • XLSX内置动态元数据:XLSX本质是封装了多份XML文件的ZIP格式包,除了存储表格内容的核心XML外,还包含docProps/core.xml、docProps/app.xml等元数据文件,每次生成时会自动写入当前时间戳、随机生成的文档唯一ID、默认创建者信息等动态内容,这些内容不会影响表格的展示和实际数据,但是会直接改变整个XLSX文件的字节序列。
  • Apache POI的非固定输出逻辑:部分版本的apache-poi在生成XLSX时,会动态生成内部资源的关联ID、临时辅助属性,这类字段属于格式内部的辅助配置,不影响业务数据,也会造成字节差异。
  • 压缩参数未固定:如果代码生成XLSX、或者将XLSX打包到最终交付ZIP包时,没有固定压缩级别、文件修改时间等参数,也会导致最终输出的文件字节出现差异。
可行的校验方案

放弃全字节对比的思路,改用和业务数据强相关的校验方式:

  • 调用apache-poi接口分别读取两份XLSX文件的所有工作表,逐行逐单元格对比单元格值、格式、公式等业务属性,完全匹配则视为转换正确
  • 如果需要做字节级对比,可以将XLSX文件本身解压,排除元数据相关的动态文件,仅对比存储表格内容的核心文件(如xl/worksheets/sheet*.xml、xl/sharedStrings.xml等)的字节

内容的提问来源于stack exchange,提问作者Johanna Egger

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 12:27:02