Tag: supercsv

使用SuperCSV更改标头值

根据这篇关于SuperCSV能力的post , SuperCSV可以处理从数据库中读取的标题( 仅列名 )的值吗? 例如,以下代码段详细说明了当前状态和预期状态。 当前状态 输入 : final String[] header = new String[] { “firstName”, “lastName”, “birthDate”}; // write the header beanWriter.writeHeader(header); // write the beans for( final CustomerBean customer : customers ) { beanWriter.write(customer, header, processors); } OUTPUT :包含列名的文件: firstName, lastName, birthDate Bob , Doe , 02/12/2013 预期国家 输入 : final String[] […]

有没有办法在java中改变csv文件中特定单元格的值?

我在StackOverflow上经历了有关此问题的其他问题,但那里提到的库只允许读取或写入。 其中一些允许部分读取或写入像SuperCSV,但没有库可用于更新特定单元格的值。 是否有其他库可以使用或我需要手动执行吗?

Java到CSV文件,SuperCSV Dozer:如何避免嵌套对象的循环

我有以下课程.. SurveyResponse.java import java.util.List; public class SurveyResponse { private int age; private Boolean consentGiven; private List answers; public SurveyResponse() { } public SurveyResponse(final int age, final Boolean consentGiven, final List answers) { this.age = age; this.consentGiven = consentGiven; this.answers = answers; } public int getAge() { return age; } public List getAnswers() { return answers; […]

如何使用supercsv跳过仅限空格的行和具有可变列的行

我正在研究CSV解析器要求,我正在使用supercsv解析器库。 我的CSV文件可以有25列(由制表符(|)分隔)和最多100k行以及其他标题行。 我想忽略只有空格的行和包含少于25列的行。 我正在使用IcvBeanReader和名称映射(将csv值设置为pojo)和字段处理器(以处理validation)来读取文件。 我假设Supercsv IcvBeanReader默认会跳过空白行。 但如果一行包含少于25个列号,如何处理?

搞砸了CSV会导致exception

我想我发现了一个bug。 或许它不是,但Super CSV无法很好地处理。 我正在使用MapReader解析包含41列的CSV文件。 但是,我正在获得CSV – 以及给我CSV的网络服务混乱了一行。 “标题”行是制表符分隔的行,包含41个单元格。 而“错误的行”是一个带有36个单元格的制表符分隔行,内容没有任何意义。 这是我正在使用的代码: InputStream fis = new FileInputStream(pathToCsv); InputStreamReader inReader = new InputStreamReader(fis, “ISO-8859-1″); ICsvMapReader mapReader = new CsvMapReader(inReader, new CsvPreference.Builder(‘”‘,’\t’,”\r\n”).build()); final String[] headers = mapReader.getHeader(true); Map row; while( (row = mapReader.read(headers)) != null ) { // do something } 我在上面提到的行中执行mapReader.read(headers)时遇到exception。 这是例外: org.supercsv.exception.SuperCsvException: the nameMapping array and the […]

生成的csv文件中不需要的双引号

我使用下面的Java代码创建了一个CSV文件: String csv = rs.getString(“UPLOAD_FOLDER_PATH”)+”.csv”; CSVWriter writer = new CSVWriter(new FileWriter(csv)); String [] filevalues = new String[filevaluesarray.size()]; filevalues=filevaluesarray.toArray(filevalues); writer.writeNext(filevalues); writer.close(); 我收到了CSV文件,但该文件的内容包含不需要的双引号。 例如。 “ABC”, “123”, “KDNJ” 我不会从这些双引号添加的地方得到。

使用SuperCSVvalidation一次通过中的每个字段

我正在尝试使用SuperCSV将大量行(约200万)从数据库写入CSV文件。 我需要在编写每个单元格时执行validation,内置的CellProcessors非常好。 我想捕获CellProcessors抛出的所有exception,以便我可以返回源数据并进行更改。 问题是当一行中有多个错误时(例如,第一个值超出范围,第二个值为null但不应该是),只有第一个CellProcessor会执行,所以我只会看到一个的错误。 我想在一次传递中处理整个文件,并在其结尾处有一组完整的exception。 这是我正在尝试的方法: for (Row row : rows) { try { csvBeanWriter.write(row, HEADER_MAPPINGS, CELL_PROCESSORS); } catch (SuperCsvCellProcessorException e) { log(e); } } 我怎样才能做到这一点? 谢谢! 编辑:这是我写的代码类似于猎犬的代码,以防它帮助任何人: import java.util.List; import org.supercsv.cellprocessor.CellProcessorAdaptor; import org.supercsv.cellprocessor.ift.CellProcessor; import org.supercsv.exception.SuperCsvCellProcessorException; import org.supercsv.util.CsvContext; public class ExceptionCapturingCellProcessor extends CellProcessorAdaptor { private final List exceptions; private final CellProcessor current; public ExceptionCapturingCellProcessor(CellProcessor current, […]

在CSV文件中创建多个工作表

我正在使用superCSV在我的代码中以csv格式写入数据。 它的工作非常好,非常有效,但现在我的要求发生了变化。 我需要在单个xls文件中编写多个工作表,这是非常耗时的任务。 那么在supercsv中有什么方法我可以在单个csv文件中编写多个工作表数据并将其发送到客户端,这样当客户端在MS-Excel中打开这个csv文件时,他可以看到多个工作表而不是我生成带有多个工作表的excel文件并将其发送到客户端。 谢谢

Java – 将hashmap写入csv文件

我有一个带有String键和String值的hashmap。 它包含大量键及其各自的值。 例如: key | value abc | aabbcc def | ddeeff 我想将此hashmap写入csv文件,以便我的csv文件包含如下行: abc,aabbcc def,ddeeff 我在这里使用supercsv库尝试了以下示例: http ://javafascination.blogspot.com/2009/07/csv-write-using-java.html。 但是,在此示例中,您必须为要添加到csv文件的每一行创建一个hashmap。 我有大量的键值对,这意味着需要创建几个哈希映射,每个哈希映射包含一行的数据。 我想知道是否有更优化的方法可用于此用例。 提前致谢!

使用CsvBeanReader读取具有可变列数的CSV文件

所以我正在解析.csv文件。 我在StackOverflow上的某个地方接受了另一个线程的建议并下载了SuperCSV。 我终于完成了一切工作,但现在我遇到了一个似乎很难修复的错误。 出现此问题的原因可能是也可能未填充最后两列数据。 下面是.csv文件的示例,第一行缺少最后一列,第二行完全完成: 2012:07:25,11:48:20,922,“uLog.exe”,“”,按键,1246,341,-1.00,-1.00,1.00,class次2012:07:25,11:48:21,094,“ uLog.exe“,”“,按下键,1246,341,-1.00,-1.00,1.00,b,Shift 根据我对Super CSV Javadoc的理解,如果存在可变数量的列,则无法使用CsvBeanReader填充Java Bean。 这似乎真的很愚蠢,因为我觉得在初始化Bean时,应该允许这些缺少的列为null或其他一些默认值。 作为参考,这是我的解析器的完整代码: public class ULogParser { String uLogFileLocation; String screenRecorderFileLocation; private static final CellProcessor[] cellProcessor = new CellProcessor[] { new ParseDate(“yyyy:MM:dd”), new ParseDate(“HH:mm:ss”), new ParseDate(“SSS”), new StrMinMax(0, 100), new StrMinMax(0, 100), new StrMinMax(0, 100), new ParseInt(), new ParseInt(), new ParseDouble(), new ParseDouble(), new ParseDouble(), […]