问题标签 [apache-commons-csv]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2747 浏览

java - 如何安全地将 List 转换为 csv 字节数组?

最初我有以下代码:

尝试 1

在这里我发现有时字节数组没有完全写入。

我知道这是因为在externalHttpCall调用期间流没有被刷新。

为了修复它,我写了以下内容:

尝试 2

它解决了这个问题,但是在这里我迷失了一个想法,即仅在externalHttpCall. 所以我想出了以下解决方案:

尝试 3

我预计刷新会在流关闭之前发生。但根据我的实验,它不起作用。看起来这是因为刷新发生在流关闭之前但在 toByteArray 调用之后。

我该如何解决?

0 投票
1 回答
373 浏览

java - 存在标题时如何跳过csv文件中的标题

我正在使用 apache-common-csv 从 CSV 文件导入数据,我想跳过第一行的标题。重要的是,文件有时可以包含标题,但有时不包含。我有一个像下面这样的实现,但结果让我不满意,因为当文件没有标题时,第一行正在剪切。

0 投票
1 回答
1076 浏览

java - 有没有办法使用 CSVParser 为 CSV 文件添加自定义分隔符?

目前,我正在使用本教程来了解如何读取 CSV 文件:https : //stackabuse.com/reading-and-writing-csvs-in-java-with-apache-commons-csv/ 它使用了 Apache 的 CSVParser 和 CSVFormat-公共-csv。

它可以很好地阅读,但不是我想要的方式。在我检查了它为什么不起作用的原因后发现我的 CSV 文件有分隔符“|” 而不是 "," 并且 CSVParser 无法读取它。有没有办法让我将 CSVParser 的分隔符更改为“|” 代替 ”,”?我真的很想使用这种方法,因为record.get("name of the map")我正在做的这个项目对我有很大帮助,我不想手动更改 CSV 文件。

这是我当前的代码:

任何形式的帮助表示赞赏。

0 投票
1 回答
38 浏览

java - 什么情况下apache.commons.csv.CSVPrinter的构造函数会抛出IOException?

根据org.apache.commons.csv.CSVPrinter的文档,“如果无法打印可选标头 [在第二个参数中提供]”将引发 IOException。但是什么会导致可选标题无法打印?标题中的某些字符串是否以某种方式无效?

0 投票
0 回答
65 浏览

java - org.apache.commons.csv.CSVRecord.values() 具有默认访问权限

org.apache.commons.csv.CSVRecord.values()给我记录值。但是,它具有从 commons-csv-1.5.jar 开始的默认访问说明符。

为了获取这些值,我创建了一个 org.apache.commons.csv.MyCSVRecord 类并使用它委托对 CSVRecord.values() 方法的调用。它是一个 hacky 解决方法。

作为 org.apache.commons.csv 的一部分,是否有任何现有的访问器类?我不明白为什么他们没有公开一个公共方法来获取值

0 投票
1 回答
472 浏览

java - 使用 Apache Camel 从另一个 API 使用 JSON 并将其写入 CSV

我是apache骆驼的新手。我想从另一个 api 的端点 url (http://localhost:8080/employeePayload) 使用 json 数据。我想使用这个 json 数据,使用 apache camel 将其解组到 POJO 并将其写入 CSV 文件。在我用 CSV 编写它之前,我需要为每个属性/列添加分隔符 |”。此外,我还必须向 CSV 文件添加标题和尾记录。标题由一些静态列名和一些运行时名称组成。标题列数将和json数据不一样。header有15列,json有110列)。

有没有办法在不使用 setter 方法的情况下将 json/pojo 绑定到 CSV 文件(因为我有 110 个属性,不能全部使用 setter)?

有人可以建议实现这一目标的最佳方法吗?

如果标题部分不清楚,请告诉我如何使用分隔符(|”)将 json 写入 CSV。

编辑:我可以从另一个 API 使用 json。但是,我不确定如何使用 apache camel 或任何其他库在不使用 getter 和 setter 的情况下使用分隔符将其写入 CSV。

0 投票
1 回答
352 浏览

java - Apache commons CSV 忽略 csv 文件中损坏或无效的记录并继续解析

我正在尝试解析一个几乎有效的 CSV 文件,其中包含 99.9% 正确和有效的数据。但是中途有几条记录无效(引号太多),例如

我的代码

如何解析 CSV,以便在遇到无效行/记录时跳过它并移至下一行?

0 投票
1 回答
1380 浏览

java - Java:使用不带行号的 InputStream 和 Apache Commons CSV

这可能非常简单,但我无法找到执行此操作的选项。我正在尝试使用 Apache Commons CSV 读取文件以供以后验证。有问题的 CSV 作为输入流提交,它似乎在读取文件时向文件添加了一个附加列,其中包含行号。如果可能的话,我希望能够忽略它,因为标题行不包含数字,这会导致错误。InputStream 中是否已经有一个选项可以执行此操作,还是我必须设置某种后处理?

我正在使用的代码如下:

使用时withHeader(),我最终遇到以下错误:

我不能简单地跳过它,因为我需要对标题行进行一些验证。

此外,这里是一个示例 CSV 文件:

编辑:另外,最终目标是验证以下内容:

  1. 有名为“Employee_ID”、“Department”和“Email”的列。为此,我想我需要删除 .withHeader()。
  2. 每行以逗号分隔。
  3. 没有空单元格值
0 投票
2 回答
321 浏览

java - 使用相同的转义和引号字符分隔 CSV

我有一个简单的 CSV 文件,如下所示:

这是使用 Apache CSV 读取它的尝试:

这不起作用,因为:

其他 CSV 工具(例如 Google 表格)可以很好地加载 CSV。

如果我使用另一个引号或转义字符,它会起作用,但遗憾的是客户的 CSV 已设置。

如何配置 Apache CSV 以允许相同的转义和引号字符?或者有什么方法可以修改流以动态替换引号字符(文件很大)?

0 投票
1 回答
875 浏览

java - 如何验证 CSV 文件的第一行是否与标题名称匹配?

我想处理这种结构的 CSV 文件:

但前提是第一行包含两个标题名称 - 否则抛出异常。

我目前使用Apache Common CSV的实现是:

问题是第一行的值可能与标题名称不同,并且文件仍在处理中。