2016-04-22 19 views
0

ここにいくつかの問題があります。私のExcelドキュメントを読みたいのですが、読みたくない行がある場合は、読み飛ばしてください。ここに私のExcelの例は次のとおりです。行3 excel exampleJAVA - 特定の行からExcelを読み取る

から開始し、ここに私のコードは私が私のJavaプログラムが読みたいと仮定することができます:私たちは、ユーザまたはクライアントのドキュメントを知っていることはないと仮定し

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"); 
     } 

、彼/彼女は、あらゆる行から値が始まるような優れたものを作ることができます。彼が4列目から値のスタートをアップロードした場合はどうでしょうか?または行5?多分最初の行ですか? 誰かが私にそれを手伝ってもらえますか?有効なIDは、あなたのtestdatapksテーブルに挿入する前に存在する場合

+1

「i = 0」を「i = 2」に変更してください。 –

+0

はい、ユーザーやクライアントがもう一方のエクセルをアップロードするタイミングはわかりません。彼が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); 
      } 

それとも、プログラム開始行を検索したい場合は...

チェックよりダイナミックなアプローチです。

  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

私は、ユーザーやクライアントのドキュメントを知らないと仮定して、値をあらゆる行から始めることができます。わかりません。彼が4列目から値のスタートをアップロードした場合はどうでしょうか?または行5?多分最初の行ですか? – Diastowo

+0

あなたは私の優れたイメージを見たことがありますか?スキップする行が空白またはヌルであるとは限りません – Diastowo

+1

@Diastowo私は自分の答えを更新しました。おそらく行に有効なIDがある限り、その行をデータベースに挿入できます。 –

関連する問題