Mapeo de CSV a JavaBeans usando OpenCSV

OpenCSV proporciona clases para asignar archivos CSV a una lista de Java-beans. La clase CsvToBean se utiliza para asignar datos CSV a JavaBeans. Los datos CSV se pueden analizar en un bean, pero lo que se requiere hacer es definir la estrategia de mapeo y pasar la estrategia a CsvToBean para analizar los datos en un bean. HeaderColumnNameTranslateMappingStrategy es la estrategia de asignación que asigna la identificación de la columna a la propiedad del bean Java.

  1. Primero agregue OpenCSV al proyecto.
    • Para el proyecto maven, incluya la dependencia maven de OpenCSV en el archivo pom.xml.

      <dependency>
          <groupId>com.opencsv</groupId>
          <artifactId>opencsv</artifactId>
          <version>4.1</version>
      </dependency>
    • Para Gradle Project, incluya la dependencia de OpenCSV.
      compile group: 'com.opencsv', name: 'opencsv', version: '4.1'
    • Puede descargar OpenCSV Jar e incluirlo en la ruta de clase de su proyecto.
  2. Mapear CSV a JavaBeans
    Mapear un CSV a JavaBeans es un proceso simple y fácil. Solo sigue estos dos pasos:
    1. Cree un Hashmap con mapeo entre la identificación de la columna y la propiedad del bean.
      Map mapping = new HashMap();
              mapping.put("column  id ", "javaBeanProperty");
      

      Luego agregue toda la identificación de la columna del archivo csv con su propiedad javabean correspondiente.

    2. Cree el objeto HeaderColumnNameTranslateMappingStrategy y pase el mapeo hashmap al método setColumnMapping.
      HeaderColumnNameTranslateMappingStrategy strategy =
       new HeaderColumnNameTranslateMappingStrategy();
              strategy.setType(JavaBeanObject.class);
              strategy.setColumnMapping(mapping);
      
    3. Crear el objeto de la clase CSVReade y CsvToBean
      String csvFilename = "data.csv";
      CSVReader csvReader = new CSVReader(new FileReader(csvFilename));
      CsvToBean csv = new CsvToBean();
      
    4. Llame al método de análisis de la clase CsvToBean y pase los objetos HeaderColumnNameTranslateMappingStrategy y CSVReader.
      List list = csv.parse(strategy, csvReader);
      

Ejemplo: vamos a convertir un archivo csv que contiene datos de Estudiante en objetos de Estudiante que tengan el atributo Nombre, RollNo, Departamento, Resultado, Puntero.

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

Primero cree una clase de estudiante con los atributos Nombre, RollNo, Departamento, Resultado, Puntero. Luego, cree una clase principal que asigne datos csv al objeto JavaBeans.

Programas:

  1. Estudiante.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);
            }
        }
    }

Salida :

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]

Referencia: documentación de OpenCSV , documentación de CsvTOBean , MappingStrategy

Publicación traducida automáticamente

Artículo escrito por AmanSingh2210 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *