Read CSV file column by column

前端 未结 8 1720
萌比男神i
萌比男神i 2020-11-29 04:31

I want to read specific columns from a multi column csv file and print those columns in other csv file using Java. Any help please? Following is my code to print each token

8条回答
  •  鱼传尺愫
    2020-11-29 05:04

    To read some specific column I did something like this:

    dpkcs.csv content:
    FN,LN,EMAIL,CC
    Name1,Lname1,email1@gmail.com,CC1
    Nmae2,Lname2,email2r@gmail.com,CC2
    

    The function to read it:

    private void getEMailRecepientList() {
                    List emailList = null;// Blank list of POJO class
                    Scanner scanner = null;
                    BufferedReader reader = null;
                    try {
                        reader = new BufferedReader(new FileReader("dpkcs.csv"));
                        Map mailHeader = new HashMap();
                        // read file line by line
                        String line = null;
                        int index = 0;
                        line = reader.readLine();
                        // Get header from 1st row of csv
                        if (line != null) {
                            StringTokenizer str = new StringTokenizer(line, ",");
                            int headerCount = str.countTokens();
                            for (int i = 0; i < headerCount; i++) {
                                String headerKey = str.nextToken();
                                mailHeader.put(headerKey.toUpperCase(), new Integer(i));
    
                            }
                        }
                        emailList = new ArrayList();
    
                        while ((line = reader.readLine()) != null) {
                        // POJO class for getter and setters
                            EmailRecepientData email = new EmailRecepientData();
                            scanner = new Scanner(line);
                            scanner.useDelimiter(",");
                        //Use Specific key to get value what u want
                            while (scanner.hasNext()) {
                                String data = scanner.next();
                                if (index == mailHeader.get("EMAIL"))
                                    email.setEmailId(data);
                                else if (index == mailHeader.get("FN"))
                                    email.setFirstName(data);
                                else if (index == mailHeader.get("LN"))
                                    email.setLastName(data);
                                else if (index == mailHeader.get("CC"))
                                    email.setCouponCode(data);
    
                                index++;
                            }
                            index = 0;
                            emailList.add(email);
                        }
                        reader.close();
                    } catch (Exception e) {
                        StringWriter stack = new StringWriter();
                        e.printStackTrace(new PrintWriter(stack));
    
                    } finally {
                        scanner.close();
                    }
    
                    System.out.println("list--" + emailList);
    
                }
    

    The POJO Class:

    public class EmailRecepientData {
        private String emailId;
        private String firstName;
        private String lastName;
        private String couponCode;
    
        public String getEmailId() {
            return emailId;
        }
    
        public void setEmailId(String emailId) {
            this.emailId = emailId;
        }
    
        public String getFirstName() {
            return firstName;
        }
    
        public void setFirstName(String firstName) {
            this.firstName = firstName;
        }
    
        public String getLastName() {
            return lastName;
        }
    
        public void setLastName(String lastName) {
            this.lastName = lastName;
        }
    
        public String getCouponCode() {
            return couponCode;
        }
    
        public void setCouponCode(String couponCode) {
            this.couponCode = couponCode;
        }
    
        @Override
        public String toString() {
            return "Email Id=" + emailId + ", First Name=" + firstName + " ,"
                    + " Last Name=" + lastName + ", Coupon Code=" + couponCode + "";
        }
    
    }
    

提交回复
热议问题