如何读取像文本一样的excel(.xls)文件?

我需要阅读我收到的一个excel(.xls)文件。 使用像UTF-8,Cp1252,ISO-8859-1,UTF-16LE这样的常规字符集,这些都没有帮助我,字符仍然是畸形的。

所以我search结束了使用juniversalchardet ,它告诉我,字符集是MacCyrillic,使用MacCyrillic来读取文件,但仍然同样奇怪的结果。

当我在excel上打开文件时,一切都很好,所有的字符都很好,因为它的葡萄牙语,它充满了白〜等等。 但是打开惠普记事本或槽java的文件都搞砸了。 但是,如果打开我的Excel文件,然后再保存它像.txt它变得可读

我的方法来find字符集

public static void lerCharset(String fileName) throws IOException { byte[] buf = new byte[50000000]; FileInputStream fis = new FileInputStream(fileName); // (1) UniversalDetector detector = new UniversalDetector(null); // (2) int nread; while ((nread = fis.read(buf)) > 0 && !detector.isDone()) { detector.handleData(buf, 0, nread); } // (3) detector.dataEnd(); // (4) String encoding = detector.getDetectedCharset(); if (encoding != null) { System.out.println("Detected encoding = " + encoding); } else { System.out.println("No encoding detected."); } // (5) detector.reset(); fis.close(); } 

我怎样才能发现正确的字符集? 我应该尝试一个不同的方法吗? 像让我的Java重新保存Excel中,然后开始阅读?

如果我理解你的问题,你正在尝试像读取文本文件一样读取excel文件。

挑战在于.xls文件实际上是包含文本,格式,表单信息,macros信息等的二进制文件。

您可能需要将文件保存为.csv(通过Excel运行程序或直接通过程序直接),将其升级到.xlsx(其中有许多库可以将文件作为XML读取),或者使用库(如Apache POI 或类似的东西 ),甚至使用ADO查询数据。

祝你好运,我希望这就是你通过你的问题暗示。

码:

 WorkbookSettings workbookSettings = new WorkbookSettings(); WorkbookSettings.setEncoding("Cp1252");