【问题标题】:How to read csv file of excel using apache csv如何使用 apache csv 读取 excel 的 csv 文件
【发布时间】:2018-09-07 07:05:03
【问题描述】:

我有一个 CSV 文件(excel),其中每个数据都可以在像 excel 这样的单元格中使用。我正在使用 Apache CSV 来解析 excel 类型的 csv。在解析数据时,我的每个字符之间都被空字符分隔。这个 CSV 文件我从不同的来源获得,但是当我复制相同的 excel csv 文件数据并手动制作一个 excel csv 文件时,我的下面的代码能够获得所需的输出。

我的 CSV Excel:

我的代码:

InputStream is =null;
Reader in =null;
is = new ByteArrayInputStream(excelCSVFile);

in = new InputStreamReader(is);

CSVParser parser = new CSVParser(in, CSVFormat.EXCEL.withHeader("EMPLOYEE_ID","NAME","DOJ",
                    "MOBILE_NO").withSkipHeaderRecord(true).withTrim(true));

List<CSVRecord> records = parser.getRecords();

for (CSVRecord record : records) {

System.out.println("Employee Id::"+record.get("EMPLOYEE_ID"));

System.out.println("Employee Name::"+record.get("NAME"));

}

我通过上面的代码得到的输出是:

当我检查空白字符的 ASCII 值时,我得到 '0' 因为值表示空字符。

我希望得到这样的输出:

【问题讨论】:

  • 这是 ASCII 还是 Unicode ?这看起来像一个编码问题
  • @Marged 是对的。除了 CVS 元数据(标题、列类型……),要读取任何类型的文本文件,您需要知道编写器使用的字符编码。发件人应与您沟通,您应保留并使用它,否则沟通失败。
  • 大家好,CSVFormt.EXCEL 是如何为您工作的,它根本不适合我。你能看看我发布的这个问题stackoverflow.com/questions/67964627/…

标签: java csv excel-2010 apache-commons-csv


【解决方案1】:
is = new FileInputStream(excelCSVFile);

而不是

is = new ByteArrayInputStream(excelCSVFile);

还要注意这些字段是区分大小写的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-01-18
    • 1970-01-01
    • 2022-11-11
    • 2018-04-22
    • 2019-02-08
    • 2019-06-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多