Java - 如何从格式/扩展名错误的 XLS 中提取文本?

问题描述 投票:0回答:1

我有一个 Excel (

.xls
) 文件 -
Export.xls

当我手动尝试打开它时,我收到以下消息:

The file format and extension of 'Export.xls' don't match. The file could be corrupted or unsafe. Unless you trust its source, don't open it. Do you want to open it anyway
?”

如果我单击“是”并继续,文件将打开。然后,如果我“

Save As
Excel 97-2003 Workbook (*.xls)
,文件将被保存,下次打开它时,我不会收到上述错误消息。

现在,我的需要是通过 Java 代码来完成此操作。因为由于限制,我无法在运行Java程序之前手动修复它。

我的未损坏(常规)文件的工作代码如下:

import org.apache.poi.hssf.extractor.ExcelExtractor;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

    HSSFWorkbook hwb = new HSSFWorkbook(new FileInputStream(expFile));
    String expFileText = new ExcelExtractor(expWorkBook).getText();
    System.out.println("Export xls file text: " + expFileText);

这对于常规

xls
文件效果很好。然而,对于上面的文件(如果我没有手动保存为不同的格式),Java程序会抛出以下错误:

Invalid header signature; read 0x6D78206C6D74683C, expected 0xE11AB1A1E011CFD0 - Your file appears not to be a valid OLE2 document

我该如何解决这个问题?

java excel apache-poi poi-hssf hssfworkbook
1个回答
0
投票

这似乎是纯文本“mx lm...”。

CSV 文本文件通常具有 .xls 扩展名,以便浏览器使用 Excel 打开该文件。

将文件重命名为.txt并检查字符集编码,并使用正确的字符集读取它。也许是 CSV 阅读器。

© www.soinside.com 2019 - 2024. All rights reserved.