0
votes

Exportation de données importantes de la base de données dans Excel à l'aide de Resulatset

J'ai besoin d'exporter le résultat d'un résultat dans une feuille Excel utilisant Java. Les RESEXET contiennent une table avec des milliers de lignes et de multiples colonnes. Si quelqu'un pouvait fournir un exemple de code qui sera très utile car je suis bloqué avec ce problème. Vous trouverez ci-dessous le code d'échantillon que j'utilise pour y parvenir, mais d'une manière ou d'une autre capacité à obtenir des données correctes dans le fichier Excel: -

SSFWorkbook workbook = new XSSFWorkbook();
    try {
    setConnection(appDB);

    String queryName="SELECT * FROM ALL_TABLES where table_name='table_name'";

    Reporter.addStepLog("----------------------------------- " + queryName.toUpperCase()
            + "\n - Validation Start" + " -----------------------------------");
    ps = con.prepareStatement(queryName, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
    rs = ps.executeQuery();

    Statement statement = con.createStatement();
    XSSFSheet spreadsheet = workbook.createSheet("employedb");
      ResultSet resultSet = statement.executeQuery("select * from all_tab_columns where table_name='table_name'"); 
      XSSFRow row = spreadsheet.createRow(0);
      XSSFCell cell;
      int cc=resultSet.getMetaData().getColumnCount();
      for(int i=1;i<=cc;i++)
      {
          String headerVal=resultSet.getMetaData().getColumnName(i);
          headerValues.add(headerVal);
          cell = row.createCell(i-1);
          cell.setCellValue(resultSet.getMetaData().getColumnName(i));
      }
      System.out.println(headerValues);
      int i = 1;
      while (resultSet.next())
      {  
          for(int j=1;j<=cc;j++)
          {  
          System.out.println(resultSet.getString(j));
          XSSFRow row1 = spreadsheet.createRow((short) i);
          row1.createCell((short) i).setCellValue(resultSet.getString(resultSet.getMetaData().getColumnName(j)));
          i++;

      }  
      }

      FileOutputStream out = new FileOutputStream(new File("S:\\Downloads\\excel.xlsx"));
      workbook.write(out);
      out.close();  
      System.out.println("exceldatabase.xlsx written successfully");

}catch(Exception e){}
}


2 commentaires

Rien à voir avec le sélénium ici, vous devez supprimer la balise.


Utilisez cette API, il prend en compte les grandes données (mise en cache): sourceforge.net/projects/automatic -Report-générateur


3 Réponses :


0
votes

Pour moi, la question n'est pas si claire. Vous souhaitez mettre calculer des données sur une feuille Excel? ou vous voulez obtenir des données de calcul de calcul à partir d'une feuille Excel?

J'ai compris que vous voulez mettre des données dans la feuille. Vous pouvez donc utiliser plusieurs cadres pour le faire. Par exemple. Bibliothèque SmartXLS ou Apache POI


4 commentaires

HUBI - Je souhaite exporter des données de table de la base de données Oracle dans Excel à l'aide de Java. J'espère que maintenant, il est clair.


Obtenez-vous les données hors de la base de données? Vous pouvez récupérer les données de la base de données avec une requête de base de données. Par exemple, vous pouvez l'enregistrer dans une liste. Le framework Hibernate (ORM) est très utile. Vous pouvez maintenant parcourir la liste et charger les données dans le fichier Excel et l'enregistrer ensuite. Pour cette application, je recommanderais Hibternate pour la requête de base de données et SmartXLS pour remplir la feuille ExcelSheet.


HUBI- J'utilise Java pour extraire les données de la base de données et le stocker dans les Resultset. Maintenant, je veux écrire toutes les données de Restructionnés à Excel. J'ai mis à jour ma question à montrer le code que j'utilise pour y parvenir, mais cela ne fonctionne pas. S'il vous plaît aider si vous pouvez fournir un code ou modifier mon code.


Malheureusement, je ne suis pas tant dans le POI. Mais je vous recommanderais de scinder la requête de la base de données et du remplissage du fichier Excel en deux méthodes distinctes.



0
votes
    List<Double> resultList = new ArrayList();
    resultList.add(250.0);
    resultList.add(300.5);
    resultList.add(500.9);


public void setResultsToSheet(List results) throws Exception {
    WorkBook workBook = new WorkBook();
    int row = 0; //index of first row is 0
    for (int i = 0; i < results.size(); i++) {
        double result = (double) results.get(i);
        workBook.setNumber(row, 1, result);
        row++;
    }
    workBook.write("X\\yourDestination\\excel.xlsx");
}
Hope that can help you anyway.

3 commentaires

HUBI- Je vais essayer de mettre en œuvre cela demain et vous permettra de savoir. Nous utilisons POI afin que cela ne fonctionne pas, mais merci pour une réponse rapide.


Ok, laissez-moi savoir. Peut-être que je peux m'améliorer de plus près et vous aider.


Hubi - mon code ci-dessus a fonctionné après avoir apporté des changements mineurs. Merci de votre aide.



0
votes

Vous pouvez essayer d'utiliser MEMPOI . Jetez un coup d'œil:

File file = new File("S:\\Downloads\\excel.xlsx")

PreparedStatement prepStmt = this.connection.prepareStatement("SELECT * FROM ALL_TABLES where table_name='table_name'");
new MempoiBuilder()
                .setFile(file)
                .addMempoiSheet(new MempoiSheet(prepStmt, "employedb"))
                .build()
                .prepareMempoiReportToFile()
                .get();


0 commentaires