使用OpenCSV将CSV映射到JavaBeans

OpenCSV提供了将CSV文件映射到Java bean列表的类。CsvToBean类用于将CSV数据映射到JavaBeans。CSV数据可以解析为bean,但需要做的是定义映射策略,并将该策略传递给CsvToBean以将数据解析为bean。HeaderColumnNameTranslateMappingStrategy是将列id映射到JavaBean属性的映射策略。

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. 将CSV映射到JavaBeans 将CSV映射到JavaBeans是一个简单易行的过程。只需遵循以下几个步骤:
    1. 使用列id和bean属性之间的映射创建Hashmap。
      Map mapping = new HashMap();
              mapping.put("column  id ", "javaBeanProperty");
      

      然后添加csv文件的所有列id及其相应的javabean属性。

    2. 创建HeaderColumnNameTranslateMappingStrategy对象传递映射hashmap到setColumnMapping方法。
      HeaderColumnNameTranslateMappingStrategy strategy =
       new HeaderColumnNameTranslateMappingStrategy();
              strategy.setType(JavaBeanObject.class);
              strategy.setColumnMapping(mapping);
      
    3. 创建CSVReade和CsvToBean类的对象
      String csvFilename = "data.csv";
      CSVReader csvReader = new CSVReader(new FileReader(csvFilename));
      CsvToBean csv = new CsvToBean();
      
    4. 调用CsvToBean类的parse方法并传递HeaderColumnNameTranslateMappingStrategy和CSVReader对象。
      List list = csv.parse(strategy, csvReader);
      

例子: 让我们将包含学生数据的csv文件转换为具有属性名称、RollNo、部门、结果和指针的学生对象。

StudentData.csv:

name, rollno, department, result, cgpa
amar, 42, cse, pass, 8.6
rohini, 21, ece, fail, 3.2
aman, 23, cse, pass, 8.9
rahul, 45, ee, fail, 4.6
pratik, 65, cse, pass, 7.2
raunak, 23, me, pass, 9.1
suvam, 68, me, pass, 8.2

首先创建一个具有属性Name、RollNo、Department、Result和Pointer的Student类。然后创建一个将csv数据映射到JavaBeans对象的主类。

程序:

  1. 大学生JAVA

    public class Student {
    private static final long serialVersionUID = 1L;
    public String Name, RollNo, Department, Result, Pointer;
    public String getName()
    {
    return Name;
    }
    public void setName(String name)
    {
    Name = name;
    }
    public String getRollNo()
    {
    return RollNo;
    }
    public void setRollNo(String rollNo)
    {
    RollNo = rollNo;
    }
    public String getDepartment()
    {
    return Department;
    }
    public void setDepartment(String department)
    {
    Department = department;
    }
    public String getResult()
    {
    return Result;
    }
    public void setResult(String result)
    {
    Result = result;
    }
    public String getPointer()
    {
    return Pointer;
    }
    public void setPointer(String pointer)
    {
    Pointer = pointer;
    }
    @Override
    public String toString()
    {
    return "Student [Name=" + Name + ", RollNo=" + RollNo + ",
    Department
    = " + Department + " ,
    Result = " + Result
    + ", Pointer=" + Pointer + "]" ;
    }
    }

    
    

  2. csvtobean。JAVA

    import java.io.*;
    import java.util.*;
    import com.opencsv.CSVReader;
    import com.opencsv.bean.CsvToBean;
    import com.opencsv.bean.HeaderColumnNameTranslateMappingStrategy;
    public class csvtobean {
    public static void main(String[] args)
    {
    // Hashmap to map CSV data to
    // Bean attributes.
    Map<String, String> mapping = new
    HashMap<String, String>();
    mapping.put( "name" , "Name" );
    mapping.put( "rollno" , "RollNo" );
    mapping.put( "department" , "Department" );
    mapping.put( "result" , "Result" );
    mapping.put( "cgpa" , "Pointer" );
    // HeaderColumnNameTranslateMappingStrategy
    // for Student class
    HeaderColumnNameTranslateMappingStrategy<Student> strategy =
    new HeaderColumnNameTranslateMappingStrategy<Student>();
    strategy.setType(Student. class );
    strategy.setColumnMapping(mapping);
    // Create castobaen and csvreader object
    CSVReader csvReader = null ;
    try {
    csvReader = new CSVReader( new FileReader
    ( "D:\EclipseWorkSpace\CSVOperations\StudentData.csv" ));
    }
    catch (FileNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    CsvToBean csvToBean = new CsvToBean();
    // call the parse method of CsvToBean
    // pass strategy, csvReader to parse method
    List<Student> list = csvToBean.parse(strategy, csvReader);
    // print details of Bean object
    for (Student e : list) {
    System.out.println(e);
    }
    }
    }

    
    

输出 :

Student [Name=amar, RollNo=42, Department=cse, Result=pass, Pointer=8.6]
Student [Name=rohini, RollNo=21, Department=ece, Result=fail, Pointer=3.2]
Student [Name=aman, RollNo=23, Department=cse, Result=pass, Pointer=8.9]
Student [Name=rahul, RollNo=45, Department=ee, Result=fail, Pointer=4.6]
Student [Name=pratik, RollNo=65, Department=cse, Result=pass, Pointer=7.2]
Student [Name=raunak, RollNo=23, Department=me, Result=pass, Pointer=9.1]
Student [Name=suvam, RollNo=68, Department=me, Result=pass, Pointer=8.2]

参考: OpenCSV文档 , CsvTOBean文档 , 映射策略

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