Tag: csv

使用新的Java 8 Streams API解析唯一行的CSV文件

我正在尝试使用新的Java 8 Streams API(我是一个完整的新手)来解析CSV文件中的特定行(名称列中带有’Neda’的行)。 使用以下文章获取动机,我修改并修复了一些错误,以便我可以解析包含3列的文件 – ‘name’,’age’和’height’。 name,age,height Marianne,12,61 Julie,13,73 Neda,14,66 Julia,15,62 Maryam,18,70 解析代码如下: @Override public void init() throws Exception { Map params = getParameters().getNamed(); if (params.containsKey(“csvfile”)) { Path path = Paths.get(params.get(“csvfile”)); if (Files.exists(path)){ // use the new java 8 streams api to read the CSV column headings Stream lines = Files.lines(path); List columns = […]

OpenCSV:如何使用自定义列标题和自定义列位置从POJO创建CSV文件?

我创建了一个MappingsBean类,其中指定了CSV文件的所有列。 接下来,我解析XML文件并创建mappingbeans列表。 然后我将该数据写入CSV文件作为报告。 我正在使用以下注释: public class MappingsBean { @CsvBindByName(column = “TradeID”) @CsvBindByPosition(position = 0) private String tradeId; @CsvBindByName(column = “GWML GUID”, required = true) @CsvBindByPosition(position = 1) private String gwmlGUID; @CsvBindByName(column = “MXML GUID”, required = true) @CsvBindByPosition(position = 2) private String mxmlGUID; @CsvBindByName(column = “GWML File”) @CsvBindByPosition(position = 3) private String gwmlFile; @CsvBindByName(column = […]

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

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

比较Java中的两个csv文件

我们需要比较两个CSV文件。 假设文件一行有几行,第二个文件可以有相同的行数或更多行。 大多数行可以在两个文件上保持相同。寻找在这两个文件之间进行差异的最佳方法,并只读取第二个文件与第一个文件有差异的那些行。 处理文件的应用程序是Java。 有什么最好的方法? 注意:如果我们知道在第二个文件中更新,插入或删除了一行,那将会很棒。 要求:- 不会有任何重复记录 文件1和文件2可以具有相同的no记录,其中几行具有file2中的更新值(记录已更新) 文件2可能删除了几行(这被视为已删除的记录) 文件2可能会添加一些新行(这被视为已插入记录) 列的开头可以被视为记录的主键,在两个文件中都不会改变。

Java:CSV文件读写

我正在阅读2个csv文件: store_inventory和new_acquisitions 。 我希望能够将store_inventory csv文件与new_acquisitions进行比较。 1)如果项目名称匹配,则只更新store_inventory中的数量。 2)如果new_acquisitions有一个store_inventory中不存在的新项目,则将其添加到store_inventory 。 这是我到目前为止所做的,但不是很好。 我添加了评论,我需要添加1和2 。 任何做上述任务的建议或代码都会很棒! 谢谢。 File new_acq = new File(“/src/test/new_acquisitions.csv”); Scanner acq_scan = null; try { acq_scan = new Scanner(new_acq); } catch (FileNotFoundException ex) { Logger.getLogger(mainpage.class.getName()).log(Level.SEVERE, null, ex); } String itemName; int quantity; Double cost; Double price; File store_inv = new File(“/src/test/store_inventory.csv”); Scanner invscan = null; try […]

配置Spring MVC控制器将文件发送到客户端

我认为我的情景很常见。 我有一个数据库,我希望我的Spring MVC应用程序接受控制器中的请求,调用数据库服务来获取数据并将该数据作为CSV文件发送到客户端。 我正在使用此处的JavaCSV库来协助此过程: http : //sourceforge.net/projects/javacsv/ 我发现了一些人做类似事情的例子,并拼凑出看似正确的东西。 但是,当我尝试这种方法时,并没有真正发生任何事情。 我认为将数据写入HttpServletResponse的outputStream就足够了,但显然,我遗漏了一些东西。 这是我的控制器代码: @RequestMapping(value=”/getFullData.html”, method = RequestMethod.GET) public void getFullData(HttpSession session, HttpServletRequest request, HttpServletResponse response) throws IOException{ List allRecords = compReqServ.getFullDataSet((String)session.getAttribute(“currentProject”)); response.setContentType(“data:text/csv;charset=utf-8”); response.setHeader(“Content-Disposition”,”attachment; filename=\yourData.csv\””); OutputStream resOs= response.getOutputStream(); OutputStream buffOs= new BufferedOutputStream(resOs); OutputStreamWriter outputwriter = new OutputStreamWriter(buffOs); CsvWriter writer = new CsvWriter(outputwriter, ‘\u0009’); for(int i=1;i <allRecords.size();i++){ CompositeRequirement aReq=allRecords.get(i); […]

如何使用Spring-Batch读取由id-column分块的csv行?

我正在使用Spring-Batch读取csv文件,格式化内容并将其写入数据库,如: StepBuilder builder = stepBuilderFactory.get(“step”) .chunk(100) .reader(flatFileItemReader) .processor(processor) .writer(jpaItemWriter); csv包含ID列。 如何修改reader以基于该ID的块? Examle: #id, #value 1, first 1000, second 1001, second 1005, second 在这种情况下,块只会读取第一行,然后提交,然后继续。 是否可以通过文件中的值应用分块?

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。 我有大量的键值对,这意味着需要创建几个哈希映射,每个哈希映射包含一行的数据。 我想知道是否有更优化的方法可用于此用例。 提前致谢!

使用java更新特定的单元格csv文件

嗨,我有一个小问题,并认为我只是没有在一行代码上得到正确的语法。 基本上,我可以写入我的csv文件并使用字符串标记器查找特定记录,但它不会更新/编辑该记录的指定单元格。 记录保持不变。 请帮忙….

使用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(), […]