【发布时间】:2015-02-21 01:42:22
【问题描述】:
我需要处理大量来自这个名为 Aperio 的显微镜图像分析软件的 .xls 文件(使用 Aperio 分析后,它允许您将数据导出为“只读”xls 格式。另存为仅适用于 Mac 上的 Excel,在 Windows 机器上,保存和另存为按钮显示为灰色,因为文件受到保护)。不幸的是,这些文件的标头不是标准的 OLE2 格式。因此,它们无法通过 Java API POI 获取,除非它们在 Microsoft Excel 中手动加载并一一保存为 .xls。
由于目录中有这么多,手动进行另存为会非常痛苦。有没有办法编写一个Java程序来自动将这些文件保存为标准的xls文件?如果 Java 不可能,还有什么语言可以处理这种情况,Python?
编辑:
我在十六进制阅读器中加载了其中一个文件,它是: 09 04 06 00 07 00 10 00 00 00 5C 00 04 00 05 4D 44 41 80 00 08 00 00 00 00 00 00 00 00 00 92 00 19 00 06 00 00 00 0 0 0 00 F0 0 F0 0 F0 FF 00 00 00 00 00 FF FF FF 0C 00 02 00 01 00 0D 00 02 00 64 00 0E 00 02 00 01 00 0F 00 02 00 01 00 11 00 02 00 00 00 220 00 02 00 0 2 0 0 0 02 00 0 2 00 2B 00 02 00 00 00 25 02 04 00 00 00 FF 00 1F 00 02 00 22 00 1E 04 0A 00 00 00 07 47 65 6E 65 72 61 6C 1E 04 04 00 00 00 01 30 1E 04 07 00 00 00 04 30 2E 30 30 1E 04 04 08 00 00 05 23 2C 23 23 30 1E 04 04 0B 00 00 00 08 23 2C 23 23 23 30 2E 30 2E 30 30 30 1E 04 18 00 00 00 00 15 23 2C 23 23 30 330 5F F0 23 2C 23 23 30 5F F0 5F 2E 1E 04 1D 00 00 00 1A 23 2C 23 23 30 5F F0 5F 2E 3B 5B 52 65 64 5D 5C 2D 23 2C 23 23 30 5F F0 41 5F 20 3E 00E 2C 23 23 30 2E 30 30 5F F0 5F 2E 3B 5C 2D 23 2C 23 23 30 2E 30 30 5F F0 5F 2E 1E 04 23 00 00 00 20 23 2C 23 23 30 2E 25 30 30 3B 5B F0 5D 5C 2D 23 2C 23 23 30 2E 30 30 5F F0 5F 2E 1E 04 18 00 00 00 15 23 2C 23 23 30 22 F0 2E 22 3B 5C 2 D 23 2C 23 23 30 22 F0 2E 22 1E 04 1D 00 00 00 1A 23 2C 23 23 30 22 F0 2E 22 3B 5B 52 65 64 5D 5C 2D 23 2C 23 23 30 22 F0 1 2E 0 22 E 0B 23 2C 23 23 30 2E 30 30 22 F0 2E 22 3B 5C 2D 23 2C 23 23 30 2E 30 30 22 F0 2E 22 1E 04 23 00 00 00 20 23 2C 23 23 30 5 2E 30 2 30B 2 64 5D 5C 2D 23 2C 23 23 30 2E 30 30 22 F0 2E 2E 2E 2E 2E 2E 2E 04 04 04 05 00 00 00 02 30 25 1E 04 04 04 08 00 00 00 00 05 30 2E 30 30 30 30 25 1E 04 04 0B 00 00 00 00 00 08 30 2E 30 30 30 30 30 45 2B 30 30 30 1E 04 0A 00 00 07 23 22 20 22 3F 2F 2F 3F 3F 1E 04 09 00 00 00 00 06 23 22 20 22 22 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 1E 04 0D 00 00 0A 64 64 64 2F 6D 6D 6D 6D 6D 2F 79 79 79 79 79 79 1E 04 04 04 04 04 04 04 04 04 04 04 04 04 04 0C 00 00 00 09 64 64 2F 6D 6D 6D 6D 2F 79 79 1E 04 09 00 00 00 00 06 64 64 64 2F 6D 6D 6D 6D 6D 6D 6D 6D 1E 04 09 00 00 00 00 00 06 6D 6D 6D 6D 6D 6D 6D 6D 6D 6D 2F 79 79 79 79 1E 00 00 00 00 00 00 00 00 0B 68 3A 68 3A 6 DA 6D 6D 6D 6D 6D 6D 6D 6D 6D 6D 6D 6D 6D 6D 6D 6D 6D 6D 6D 6D 6D 6D 6D 6D 6D 6D 6D 6D 6D 6D 6D 6D 6D 6D 6D 6D 6D 6D 6D 6D 6D 6D 6D 6D 6D 6D 6D 6D 6D 6D 6D 6D 6D 6D 6D 6D 6D 6D 6D 6D 6D 6D 6D 6D 6D 6D 6D 6D 6D 6D 6D 6D 5C 20 41 4D 2F 50 4D 1E 04 11 00 00 00 0E 0E 68 3A 3A 6D 6D 3A 73 73 73 5C 20 41 4D 2F 50 4D 1E 04 04 04 04 04 04 04 68 3A 68 3A 6D 6D 6D 6D 6D 6D 1E 04 04 0A 00 00 00 00 00 00 07 68 3A 68 3A 6D 6D 6D 6D 6D 6D 6D 6D 6D 3A 3A 73 73 1E 04 13 00 00 00 10 64 64 2F 6D 6D 2F 79 79 79 79 5C 20 68 3A 6D 6D 1E 04 0B 00 00 00 08 23 23 30 2E 30 45 2B 30 1E 04 04 08 00 00 05 6D 6D 6D 3A 73 73 1E 04 04 04 04 04 00 00 00 00 01 40 1E 04 36 00 00 33 5F 2D 2A 20 23 2C 23 2C 23 2C 23 2C 23 23 23 23 23 30 22 F0 2 2 2 2 2 22 5f 2d 3b 5f 2d 3b 5f 2d 3b 5f 2d 3b 5f 2d 3b 5f 2d 3b 5f 2d 3b 5f 2d 3b 5f 2d 3b 5c 2D 2A 20 23 2C 23 23 30 22 F0 2E 22 5F 2D 3B 5F 2D 2A 20 22 2D 22 22 F0 2E 22 5F 2D 3B 5F 2D 40 5F 2D 1E 04 36 00 00 2 00 33 30 5F 2D 2 5F F0 5F 2E 5F 2D 3B 5C 2D 2A 20 23 2C 23 23 30 5F F0 5F 2E 5F 2D 3B 5F 2D 2A 20 22 2D 22 5F F0 5F 2E 5F 2D 3B 5F 2D 0 40 3 5F 00 2D 0E 01 2D 2A 20 23 2C 23 23 30 2E 30 30 22 F0 2E 22 5F 2D 3B 5C 2D 2A 20 23 2C 23 23 30 2E 30 30 22 F0 2E 22 5F 2D 3B 5F 2D 2A 20 3 22 2F 2A 20 3F 22 2F 5F 2D 3B 5F 2D 40 5F 2D 1E 04 3E 00 00 00 3B 5F 2D 2A 20 23 2C 23 23 30 2E 30 30 5F F0 5F 2E 5F 2D 3B 5C 2D 2A 20 23 0 2C 23 E 23 3 E 5F 2D 3B 5F 2D 2A 20 22 2D 22 3F 3F 5F F0 5F 2E 5F 2D 3B 5F 2D 40 5F 2D 31 00 14 00 A0 00 00 00 08 00 0D 4D 53 20 53 6 35 6E 70 6 2 14 00 A0 00 00 00 0E 00 0D 4D 53 20 53 61 6E 73 20 53 65 72 69 66 31 00
【问题讨论】:
-
它们是什么格式?
-
它们是 xls,但不是 apache-poi 可以识别的正确形式。如果我不先将它们保存在 Excel 中,我会收到以下错误
org.apache.poi.poifs.filesystem.NotOLE2FileException: Invalid header signature: read 0x0010000700060409, expected 0xE11AB1A1E011CFD0 - Your file appears not to be a valid OLE2 document -
取一个文件,把后缀改成.zip,看看能不能解压。让我们知道。
-
另外,检查它是否是纯文本。
-
它们不是纯文本。 Less 不会打开它们(说它们是二进制文件) Excel 打开它们没有任何问题。我觉得header的(元数据)格式有点奇怪。
标签: java python excel apache-poi poi-hssf