2016-04-22 3 views
0

У меня есть некоторые проблемы здесь, я хочу, чтобы java прочитал мой документ excel, но что, если есть какая-то строка, которую я не хочу читать, я хочу пропустить это. вот мой пример первенствует: предположим, я хочу, чтобы моя Java программа для чтения начать из строки 3 excel exampleJAVA - Чтение excel из определенной строки

и вот мой код:

public static void main(String[] args) { 
    try{ 
     Class.forName("com.mysql.jdbc.Driver"); 
     Connection con = (Connection) DriverManager.getConnection(dbconnection+","+dbusername+","+dbPass); 
     con.setAutoCommit(false); 
     PreparedStatement pstm = null ; 
     File file = new File(filepath); 
     FileInputStream input = new FileInputStream(file); 
     System.out.println(file); 
     if (!file.toString().contains("xlsx")){ 
      System.out.println("hssf"); 
      POIFSFileSystem fs = new POIFSFileSystem(input); 
      HSSFWorkbook wb = new HSSFWorkbook(fs); 
      HSSFSheet sheeth = wb.getSheetAt(0); 

      Row row; 
      for(int i=0; i<=sheeth.getLastRowNum(); i++){ 
       row = sheeth.getRow(i); 

       int id   = (int) row.getCell(0).getNumericCellValue(); 
       String nama  = row.getCell(1).getStringCellValue(); 
       String rm  = row.getCell(2).getStringCellValue(); 
       String nama_ro = row.getCell(3).getStringCellValue(); 
       String no_pks = row.getCell(4).getStringCellValue(); 
       String ket  = row.getCell(5).getStringCellValue(); 
       String lob  = row.getCell(6).getStringCellValue(); 

       String sql = "INSERT INTO testdatapks VALUES('"+id+"','"+nama+"','"+rm+"','"+nama_ro+"','"+no_pks+"','"+ket+"','"+lob+"')"; 
       pstm = (PreparedStatement) con.prepareStatement(sql); 
       pstm.execute(); 
       System.out.println("Import rows "+i); 
      } 

      con.commit(); 
      pstm.close(); 
      con.close(); 
      input.close(); 
      System.out.println("Success import excel to mysql table"); 
     } 

я предполагаю, что мы никогда не знаем, пользователь или клиент документ, то он/она может сделать преимущество, значение которого начинается с любой строки, мы никогда не знаем. что, если excel он загрузил значение, начиная с строки 4? или строки 5? или, может быть, первый ряд? может кто-нибудь помочь мне сделать это? благодаря, прежде чем

+1

Просто измените 'я = 0 'в' я = 2' –

+0

да, но мы никогда не знаем, когда пользователь или клиент загрузить другой первенствует правильно? что, если excel он загрузил значение, начиная с строки 4? или строки 5? или, может быть, первый ряд? – Diastowo

ответ

0

Вот более динамичный подход ..

  Integer startFrom = 3; // start from 3rd row change as needed 
      for(int i=startFrom - 1; i<=sheeth.getLastRowNum(); i++){ 
       row = sheeth.getRow(i); 

       int id   = (int) row.getCell(0).getNumericCellValue(); 
       String nama  = row.getCell(1).getStringCellValue(); 
       String rm  = row.getCell(2).getStringCellValue(); 
       String nama_ro = row.getCell(3).getStringCellValue(); 
       String no_pks = row.getCell(4).getStringCellValue(); 
       String ket  = row.getCell(5).getStringCellValue(); 
       String lob  = row.getCell(6).getStringCellValue(); 

       String sql = "INSERT INTO testdatapks VALUES('"+id+"','"+nama+"','"+rm+"','"+nama_ro+"','"+no_pks+"','"+ket+"','"+lob+"')"; 
       pstm = (PreparedStatement) con.prepareStatement(sql); 
       pstm.execute(); 
       System.out.println("Import rows "+i); 
      } 

Или, если вы хотите, чтобы программно найти начальную строку ..

Проверьте, есть ли действительное удостоверение личности, прежде чем вставить в таблицу testdatapks.

  for(int i=0; i<=sheeth.getLastRowNum(); i++){ 
       row = sheeth.getRow(i); 

       int id = (int) row.getCell(0).getNumericCellValue(); 
       if(id >= 0) { 
        String nama  = row.getCell(1).getStringCellValue(); 
        String rm  = row.getCell(2).getStringCellValue(); 
        String nama_ro = row.getCell(3).getStringCellValue(); 
        String no_pks = row.getCell(4).getStringCellValue(); 
        String ket  = row.getCell(5).getStringCellValue(); 
        String lob  = row.getCell(6).getStringCellValue(); 
        String sql = "INSERT INTO testdatapks VALUES('"+id+"','"+nama+"','"+rm+"','"+nama_ro+"','"+no_pks+"','"+ket+"','"+lob+"')"; 
        pstm = (PreparedStatement) con.prepareStatement(sql); 
        pstm.execute(); 
        System.out.println("Import rows "+i); 
       } 
      } 
+0

Я предполагаю, что мы никогда не знаем документа пользователя или клиента, он/она может сделать excel, значение которого начинается с любой строки, мы никогда не знаем. что, если excel он загрузил значение, начиная с строки 4? или строки 5? или, может быть, первый ряд? – Diastowo

+0

Вы видели мое изображение excel? не каждая строка, которую я хочу пропустить, пустой или пустой – Diastowo

+1

@Diastowo Я обновил свой ответ. Возможно, до тех пор, пока строка имеет действительный идентификатор, вы можете вставить ее в базу данных. –

Смежные вопросы