使用OpenCSV将Java bean映射到CSV

将JavaBean(对象)转换为CSV文件的需求非常普遍,将Bean写入CSV文件的方法有很多,但将JavaBean映射到CSV的最佳方法之一是使用OpenCSV库。在OpenCSV中有一个类名 StatefulBeanToCsvBuilder 这有助于将JavaBean转换为CSV。

null
  1. 第一项任务是 将OpenCSV库添加到项目中 .
    • 对于maven项目,在pom中包含OpenCSV maven依赖项。xml文件。

      < dependency >
      < groupId >com.opencsv</ groupId >
      < artifactId >opencsv</ artifactId >
      < version >4.1</ version >
      </ dependency >

      
      

    • 对于Gradle项目,包括OpenCSV依赖项。
      compile group: 'com.opencsv', name: 'opencsv', version: '4.1'
    • 你可以下载 OpenCSV Jar 并包含在项目类路径中。
  2. 将JavaBeans映射到CSV 下面是将JavaBean映射到CSV的分步过程。
    1. 创建Writer实例,将数据写入CSV文件。
      Writer writer = Files.newBufferedWriter(Paths.get(file_location));
    2. 创建需要写入CSV文件的对象列表。
    3. 使用ColumnPositionMapping策略将创建对象的列映射到csv的列。 这是一个可选步骤。如果未使用ColumnPositionMappingStrategy,则对象将以与对象的属性名相同的列名写入csv。
      ColumnPositionMappingStrategy mappingStrategy = new ColumnPositionMappingStrategy();
          mappingStrategy.setType(Employee.class);
      
      where Employee is the object to be mapped with CSV.
      
    4. 创建对象 州政府 创建StatefulBeanToCsvBuilder后,调用StatefulBeanToCsvBuilder类的生成方法,以writer对象为参数初始化。根据要求,用户还可以提供:
      • 列位置映射策略 借助于 使用映射策略 StatefulBeanToCsvBuilder对象的函数。
      • 借助于生成的csv文件的分隔符 带分离器 功能 StatefulBeanToCsvBuilder 对象
      • withQuotechar withQuotechar 功能 StatefulBeanToCsvBuilder 对象
      StatefulBeanToCsv beanToCsv = new StatefulBeanToCsvBuilder(writer)
      .withMappingStrategy(mappingStrategy)
      . withSeparator('#')
                          .withQuotechar(CSVWriter.NO_QUOTE_CHARACTER)
                          .build();
      
    5. 创建StatefulBeanToCsv类的对象后,可以借助StatefulBeanToCsv对象的写入方法将对象或对象列表添加到csv文件中。
      beanToCsv.write(Employeelist);
      

例子: 在本例中,我们将创建Employee对象的列表,该列表具有名称、年龄、公司、薪水等属性。然后我们将生成一个CSV文件。包含员工对象的csv。 代码:

  1. 受雇者JAVA

    public class Employee {
    public String Name, Age, Company, Salary;
    public Employee(String name, String age,
    String company, String salary)
    {
    super ();
    Name = name;
    Age = age;
    Company = company;
    Salary = salary;
    }
    @Override
    public String toString()
    {
    return "Employee [Name=" + Name + ",
    Age= " + Age + " , Company= " + Company + " ,
    Salary= " + Salary + " ]";
    }
    }

    
    

  2. Beantosv。JAVA

    import java.io.FileWriter;
    import java.io.Writer;
    import java.nio.*;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    import java.util.*;
    import com.opencsv.bean.ColumnPositionMappingStrategy;
    import com.opencsv.bean.StatefulBeanToCsv;
    import com.opencsv.bean.StatefulBeanToCsvBuilder;
    public class BeanToCSV {
    public static void main(String[] args)
    {
    // name of generated csv
    final String CSV_LOCATION = "Employees.csv " ;
    try {
    // Creating writer class to generate
    // csv file
    FileWriter writer = new
    FileWriter(CSV_LOCATION);
    // create a list of employee
    List<Employee> EmployeeList = new
    ArrayList<Employee>();
    Employee emp1 = new Employee
    ( "Mahafuj" , "24" , "HTc" , "75000" );
    Employee emp2 = new Employee
    ( "Aman" , "24" , "microsoft" , "79000" );
    Employee emp3 = new Employee
    ( "Suvradip" , "26" , "tcs" , "39000" );
    Employee emp4 = new Employee
    ( "Riya" , "22" , "NgGear" , "15000" );
    Employee emp5 = new Employee
    ( "Prakash" , "29" , "Sath" , "51000" );
    EmployeeList.add(emp1);
    EmployeeList.add(emp2);
    EmployeeList.add(emp3);
    EmployeeList.add(emp4);
    EmployeeList.add(emp5);
    // Create Mapping Strategy to arrange the
    // column name in order
    ColumnPositionMappingStrategy mappingStrategy=
    new ColumnPositionMappingStrategy();
    mappingStrategy.setType(Employee. class );
    // Arrange column name as provided in below array.
    String[] columns = new String[]
    { "Name" , "Age" , "Company" , "Salary" };
    mappingStrategy.setColumnMapping(columns);
    // Creating StatefulBeanToCsv object
    StatefulBeanToCsvBuilder<Employee> builder=
    new StatefulBeanToCsvBuilder(writer);
    StatefulBeanToCsv beanWriter =
    builder.withMappingStrategy(mappingStrategy).build();
    // Write list to StatefulBeanToCsv object
    beanWriter.write(EmployeeList);
    // closing the writer object
    writer.close();
    }
    catch (Exception e) {
    e.printStackTrace();
    }
    }
    }

    
    

输出 :

EmployeeData.csv
CSV file contains:-----

"Mahafuj", "24", "HTc", "75000"
"Aman", "24", "microsoft", "79000"
"Suvradip", "26", "tcs", "39000"
"Riya", "22", "NgGear", "15000"
"Prakash", "29", "Sath", "51000"

参考: BeanToCsv官方文件

© 版权声明
THE END
喜欢就支持一下吧
点赞15 分享