Magicodes.IE.IO:XLSX 包结构:ZIP、关系文件与顺序写入
当前位置:点晴教程→知识管理交流
→『 技术文档交流 』
XLSX 是一组有关系约束的 ZIP 部件。导出要在不能回写的输出流上写 Local Header、Data Descriptor 和 Central Directory;导入则要从工作簿关系(workbook relationship)找到真正的工作表。本文把两条路径放在同一个包结构里解释。 XLSX 不是“一个 XML 文件”,而是一个 ZIP 包:
导出和导入面对的是同一个包,只是方向相反:
导出:为什么要支持顺序写HTTP 响应流通常不支持 ZIP 的 Data Descriptor 允许 Local Header 先把这些字段留空:
ZIP Entry 的数据流一条 entry 的数据流是:
这不是“任意几层 Stream 都能随便拼”的模式演示。CRC、压缩、计数和 Data Descriptor 共享 entry 生命周期:压缩器必须 Finish,才能得到最终压缩尺寸;Data Descriptor 必须在尺寸和 CRC 确定后写入。 导入:不能假设第一个工作表叫 sheet1.xml读取时,最简单的实现会直接打开:
外部工具生成的工作簿不保证这个路径就是逻辑上的第一个 sheet。Reader 当前读取第一个可读 worksheet,定位路径来自:
同一个边界,读写两边都要守
ZIP32 的范围当前 writer 不支持 ZIP64。单个 entry、归档偏移和 Central Directory 尺寸受 ZIP32 的 32 位字段限制;entry 数量和名称长度还有 16 位字段限制。超过限制时应拆分文件、拆分 sheet,或改用支持 ZIP64 的方案。 阅读原文:点击这里 该文章在 2026/8/4 11:19:21 编辑过 |
关键字查询
相关文章
正在查询... |