【问题标题】:How to read an excel(.xls) file like text?如何读取文本之类的 excel(.xls) 文件?
【发布时间】:2014-10-01 19:06:49
【问题描述】:

我需要阅读我收到的 excel(.xls) 文件。 使用 UTF-8、Cp1252、ISO-8859-1、UTF-16LE 等常规字符集,这些都没有帮助我,字符仍然格式错误。

所以我最终使用juniversalchardet 搜索,它显示字符集是 MacCyrillic,使用 MacCyrillic 读取文件,但仍然是同样奇怪的结果。

当我在 excel 上打开文件时,一切都很好,所有字符都很好,因为它的葡萄牙语充满了 Ç ~ 等。但是打开 whit notepad 或通过 java 文件都搞砸了。 但是,如果在我的 excel 上打开文件,然后像 .txt 一样再次保存它,它就会变得可读

我查找字符集的方法

    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然后开始阅读?

【问题讨论】:

    标签: java excel utf-8 character-encoding


    【解决方案1】:

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

    挑战在于 .xls 文件实际上是包含文本、格式、工作表信息、宏信息等的二进制文件......

    您需要将文件保存为 .csv(在运行程序之前通过 Excel 或直接通过程序),将它们升级到 .xlsx(其中有许多可以将文件作为 XML 读取的库)点)或使用库(例如apache POIor anything similar)甚至使用ADO查询数据。

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

    【讨论】:

    • 我可以使用 apache POI 将此文件另存为 .csv 吗?这个 excel 没有格式化,它有 2 列,并且定义是在线的,真的很混乱,但这是我必须处理的事情
    • 什么是“定义就行了”?
    • 该文件有 A 列和 B 列,在 A 列内我有“定义”,应该是列,在 B 上是值。但我喜欢 COLUM A ROW 14 -> DESCRIPTION COLUM B ROW 14 -> XXXX COLUM B ROW 15 -> XXXX 的延续
    • 如果我是你,我要么使用 Apache 打开文件并取出数据,要么直接查询文件(这里有一个链接可以告诉你如何做到这一点:@987654323 @ )或在线查找其他库...这确实取决于您要完成的工作...试一试,如果遇到困难,请回来问问题...。只是环顾四周.. .stackoverflow.com/questions/2837039/…
    【解决方案2】:

    代码:

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

    【讨论】:

    • 它会改变我文件的字符集吗?很抱歉,我觉得它理解起来有点模糊。
    • 是的。它将 Excel 文件更改为已知与 java 导入/导出兼容的字符集。
    猜你喜欢
    • 1970-01-01
    • 2017-10-18
    • 1970-01-01
    • 2016-02-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-09
    • 1970-01-01
    • 2023-02-09
    相关资源
    最近更新 更多