问题标签 [supercsv]

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 回答
1106 浏览

java - 读取 .tsv 文件时跳过交替行

我有一个 .tsv 文件,其中最后一列有 39 列,但一列的数据为字符串,其长度超过 100,000 个字符现在发生的事情是当我尝试读取文件时,第 1 行有标题,然后数据如下

发生的事情是它在读取第 1 行之后它转到第 3 行然后第 5 行然后第 7 行虽然所有行都有相同的数据在我得到的日志之后

以下是我的代码:

请让我知道我哪里出错了

0 投票
1 回答
6317 浏览

java - 使用 super-csv 将列添加到现有 csv 文件

我承认我不是一个伟大的 Java 程序员,可能我的问题很愚蠢。我需要在不同的地方添加新列到现有的 csv 文件中。我正在使用超级 csv 库。

我的输入文件是这样的

如您所见,我没有(或不需要)标题。我需要在 column(2) 中添加一列,并在每行末尾添加一列以获得:

从我得到的库文档中(我错了吗?)我不能直接修改原始文件,但最好的办法是读取它并将其写回。我想使用CsvMapReaderCsvMapwriter可能是一个不错的选择。但是如何在现有列之间添加列?我应该分别阅读现有列的每个字段,我试图在库文档中找到建议,但我不明白该怎么做。

0 投票
0 回答
104 浏览

csv - supercsv写作表格数据库

我在 SuperCSV 写作方面遇到了一些问题。我创建了一个 Web 应用程序模块来从 DB 导出 CSV 文件。所以问题是我如何使用 CustomerBean 我找到了这段代码,但这里的客户是静态的:

我得到这个结果:无法在类 jaca.util.HashMap 中找到归档名字的 getter -检查相应的 nameMapping 元素是否与 bean 中的归档名称匹配

0 投票
1 回答
3428 浏览

csv - 如何始终在 Super CSV 中应用引号(转义)

我想把我的文件 csv 这样的形式:

"用户 2";"网页" ;"AbdelMonem NAAMANE";;;;

我像这样制作自己的 Csv Preference:

private static final CsvPreference myPreference = new CsvPreference.Builder('"',';''\n').build();

我想要这样的标题"User 2";"Web Page"

0 投票
2 回答
932 浏览

java - 如何使用类路径来指定文件位置?

这是我的maven项目的结构:

main 和 test 文件夹在 src 文件夹下,java 和 resources 文件夹在 main 文件夹下,在 resources 文件夹中,有一个 csv 文件可供读取。

据我所知,
InputStream file = ClassLoader.getSystemResourceAsStream("test.csv");
可以在资源文件中获取文件内容。

但是,为了基于 supercsv 库读取和解析 csv 文件,我必须使用以下代码,但 CsvBeanReader 方法不接受 InputStream。

那么我怎样才能不仅从基于maven结构的资源文件夹中获取文件,而且CsvBeanReader也可以接受传入的参数。

0 投票
2 回答
2402 浏览

java - supercsv如何按列名获取列值数组

以下是 csv 文件的示例:

客户编号、名字、姓氏、出生日期、邮寄地址、已婚、孩子数量、最喜欢的报价、电子邮件、忠诚度积分

1,John,Dunbar,13/06/1945,"1600 Amphitheatre Parkway Mountain View, CA 94043 United States",,,""愿原力与你同在。"" - 星球大战",jdunbar@gmail.com, 0
2,Bob,Down,25/02/1919,"1601 Willow Rd. Menlo Park, CA 94025 United States",Y,0,"""坦率地说,亲爱的,我不在乎。"" -乱世佳人”,bobdown@hotmail.com,123456

例如,如何获取所有列值属于姓氏?
我希望结果应该是 [Dunbar, Down]。

我试图搜索文档,但找不到任何有用的示例。

还有一个问题是,getLineNumber() 方法的含义是什么?我读过文档,上面写着“获取文件中的当前位置。文件的第一行是第 1 行。” 但我仍然很困惑。

0 投票
1 回答
1772 浏览

java - 如何告诉 SuperCSV 不要将空字符串映射到 null

我正在使用 ICsvListReader 和 ICsvListWriter 读取和写入 csv 文件。
我发现csv文件中的空字符串被转换为null然后输出。
我怎样才能避免这种情况发生。我试过创建一个新的 CellProcessor:

但它仍然无法正常工作。

有没有办法改变这个设置?

0 投票
0 回答
231 浏览

csv - 即使发生异常,也继续使用 csvBeanReader 读取下一行

我使用 csvBeanReader 读取 csv 文件的行。当我使用 while 循环读取原始数据时,例如:

如果发生异常,程序将退出循环而不分析剩余的原始数据。即使前一行发生异常,有没有办法继续读取下一行文件?

谢谢!!!!

0 投票
2 回答
6470 浏览

java - 如何使用 Super CSV 处理列数未知的 CSV 文件

对于一个项目,我需要处理在运行前我不知道列的 CSV 文件。CSV 文件完全有效,我只需要一遍又一遍地对几个不同的文件执行一个简单的任务。我确实需要分析列的值,这就是为什么我需要使用一个库来处理 CSV 文件。为简单起见,假设我需要做一些简单的事情,例如将日期列附加到所有文件,而不管它们有多少列。我想用 Super CSV 来做到这一点,因为我也将这个库用于其他任务。

我正在努力解决的问题更多的是一个概念问题。如果我事先不知道有多少列,我不确定如何处理这些文件。我不确定应该如何定义映射任意 CSV 文件的 POJO,或者如果我不知道文件中有哪些列和多少列,我应该如何定义单元处理器。如何动态创建与列数匹配的 Cell 处理器?例如,我将如何根据 CSV 文件的标题定义 POJO?

考虑我有两个 CSV 文件的情况:products.csv 和 address.csv。假设我想为两个文件添加一个带有今天日期的日期列,而不必编写两种不同的方法(例如 addDateColumnToProduct() 和 addDateColumnToAddress())来做同样的事情。

产品.csv:

地址.csv:

基于 CSV 文件的标题信息,我如何定义一个映射产品 CSV 的 POJO?细胞处理器也有同样的问题?我怎么能定义一个非常简单的单元处理器,它基本上只为构造函数提供适量的参数,例如 product.csv

对于address.csv:

这甚至可能吗?我是否在错误的轨道上实现这一目标?

编辑 1:不是在寻找一种可以处理在一个文件中具有可变列的 CSV 文件的解决方案。我试图弄清楚是否可以在运行时处理任意 CSV 文件,即我是否可以仅基于运行时 CSV 文件中包含的标头信息来创建 POJO。在事先不知道 csv 文件将有多少列的情况下。

解决方案 基于@baba 的回答和评论

0 投票
1 回答
233 浏览

supercsv - SuperCSV with null delimiter

I'm creating a file that isn't really a csv file, but SuperCSV can help me to make the creation of this file easier. The structure of the file uses different lengths for each line, following a layout that don't separate the different information. So, to know which information has in one line you need look at the first 2 characters (the name of the register), count the characters and extract it by size.

I've configured SuperCSV to use empty delimiter, however, the created file is using a space where it should have nothing.

I'm doing something wrong? '\0' is the correct code for a null char?