java - 使用 BeanIO 将列表写入 CSV

标签 java csv bean-io

我正在尝试使用 BeanIO 框架将数据列表写入 CSV。我能够将单个对象写入 CSV,但无法写入数据列表。

我试过下面的代码:

package com.beanio.example;

import java.util.Date;

public class Employee {
    String firstName;
    String lastName;
    String title;
    int salary;
    Date hireDate;

    // setters and getters follow ...
}
<beanio xmlns="http://www.beanio.org/2012/03" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.beanio.org/2012/03 http://www.beanio.org/2012/03/mapping.xsd">

  <stream name="employeeFile" format="csv">
  <record name="header" class="com.beanio.example.GroupH" order="1" occurs="1">
      <field name="h1" default="Header1" ignore="true" />
      <field name="h2" default="Header2" ignore="true" />
      <field name="h3" default="Header2" ignore="true" />
    </record>
    <record name="employee" class="com.beanio.example.Employee"  order="2">
      <field name="firstName" />
      <field name="lastName" />
      <field name="title" />
      <field name="salary" />
      <field name="hireDate" format="MMddyyyy" />
    </record>
  </stream>
</beanio>
public class Main {
    public static void main(String[] args) throws Exception {
        // create a StreamFactory
        StreamFactory factory = StreamFactory.newInstance();
        // load the mapping file
        factory.loadResource("mapping.xml");

        List<Employee> employees = new ArrayList<Employee>();

        Employee employee = new Employee();
        employee.setFirstName("Jennifer");
        employee.setLastName("Jones");
        employee.setTitle("Marketing");
        employee.setSalary(60000);
        employee.setHireDate(new Date());

        Employee employee1 = new Employee();
        employee1.setFirstName("JACk");
        employee1.setLastName("Jones");
        employee1.setTitle("Tele");
        employee1.setSalary(60000);
        employee1.setHireDate(new Date());

        employees.add(employee);
        employees.add(employee1);

        // use a StreamFactory to create a BeanWriter
        BeanWriter out = factory.createWriter("employeeFile", new File("employee.csv"));
        // write an Employee object directly to the BeanWriter
        out.write(employees);
        out.flush();
        out.close();
    }
}

我希望 CSV 中的结果遵循以下格式:

FirstName,LastName,Title,Salary,HireDate

例如:

Jennifer,Jones,Marketing,60000,24-12-2016

JACK,Jones,TELE,60000,24-12-2016

有人可以帮帮我吗?

最佳答案

你只需要这样做:

for(Employee e: employees){
    out.write(e);
}

这是完整的代码:

public class Main {
    public static void main(String[] args) throws Exception {
        // create a StreamFactory
        StreamFactory factory = StreamFactory.newInstance();
        // load the mapping file
        factory.loadResource("mapping.xml");

        List<Employee> employees = new ArrayList<Employee>();

        Employee employee = new Employee();
        employee.setFirstName("Jennifer");
        employee.setLastName("Jones");
        employee.setTitle("Marketing");
        employee.setSalary(60000);
        employee.setHireDate(new Date());

        Employee employee1 = new Employee();
        employee1.setFirstName("JACk");
        employee1.setLastName("Jones");
        employee1.setTitle("Tele");
        employee1.setSalary(60000);
        employee1.setHireDate(new Date());

        employees.add(employee);
        employees.add(employee1);

        // use a StreamFactory to create a BeanWriter
        BeanWriter out = factory.createWriter("employeeFile", new File("employee.csv"));
        // write an Employee object directly to the BeanWriter
        for(Employee e: employees){
            out.write(e);
        }
        out.flush();
        out.close();
    }
}

关于java - 使用 BeanIO 将列表写入 CSV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36819363/

相关文章:

c# - CSV 文件到位图

python - 如何限制每个循环读取带有引号的多个字符串作为Python中的单个字符串?

java - Spring Batch 重复调用某个项目的处理器

java - 如何在BeanIO中设置字符编码?

java - 是否可以从 portlet 代码访问 ServletContext?

java - Solr找不到库

java - 带有 HashMap 的 ArrayList 与带有 Class 的 ArrayList

csv - 导出的 CSV 文件中缺少选定的邮箱信息

java - BeanIO 将带注释的类写入固定长度

java - 关于java终止程序