2017-07-25 55 views
0

我想编写一个程序,它允许我检索存储在excel文件中的人员的详细信息。我决定使用电子邮件作为识别每个人的方式,因为这些都是独一无二的。我的程序似乎没有工作,有人可以帮助我吗?如何从Java中的excel读取特定的行?

import java.io.BufferedReader; 
import java.io.FileNotFoundException; 
import java.io.FileReader; 
import java.io.IOException; 

public class Reader { 

    public static void main(String[] args) { 

     String csvFile = "Clients.csv"; 
     BufferedReader br = null; 
     String line = ""; 
     String cvsSplitBy = ","; 

     try { 

      br = new BufferedReader(new FileReader(csvFile)); 
      while ((line = br.readLine()) != null) { 
       if(((br.readLine().split(cvsSplitBy))[2]).equals("[email protected]")){ 
        String[] data = line.split(cvsSplitBy); 

        System.out.println("First Name: "+data[0]+" Last Name: "+data[1]+" Activity Level: "+data[7]); 

       } 

      } 

     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } finally { 
      if (br != null) { 
       try { 
        br.close(); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 
      } 
     } 

    } 

} 
+0

只是一个供参考:CSV文件不是Excel文件。您可以像记事本一样简单地阅读CSV文件。 –

+0

请给出您的CSV文件的结构... –

回答

1

这是我纠正代码,固定我的问题:

 String csvFile = "Clients.csv"; 
     BufferedReader br = null; 
     String line = ""; 
     String cvsSplitBy = ","; 

     try { 

      br = new BufferedReader(new FileReader(csvFile)); 
      while ((line = br.readLine()) != null) { 
       String[] data = line.split(cvsSplitBy); 
       if(data[2].equals("[email protected]")){ 


        System.out.println("First Name: "+data[0]+" Last Name: "+data[1]+" Email: "+data[2]+" Phone Number: "+data[3]+" Activity Level: "+data[7]); 

       } 


      } 

     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } finally { 
      if (br != null) { 
       try { 
        br.close(); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 
      } 
     }