Création de plusieurs feuilles à l'aide d'Apache poi et servlets
Quand je suis à la création de plusieurs feuilles à l'aide d'Apache poi et les servlets. C'est la création de la feuille mais ne pas écrire les données dans un fichier. Je suis en train d'écrire les 1000 premiers enregistrements à la feuille sheet1 et 1000 à feuil2 par le biais de code ci-dessous, mais pas de travail
private void writeDataToExcelFile(String string,
ArrayList<ArrayList<String>> excelData, OutputStream outputStream) {
HSSFWorkbook myWorkBook = new HSSFWorkbook();
String sheetName = "";
sheetName = "Document-" + 0;
HSSFSheet mySheet = myWorkBook.createSheet();
HSSFRow myRow = null;
HSSFCell myCell = null;
for (int rowNum = 0; rowNum < excelData.size(); rowNum++) {
ArrayList<String> rowData = excelData.get(rowNum);
if(rowNum>0 && rowNum%1000 == 0)
{
sheetName = "Document-" + (rowNum/1000);
mySheet = myWorkBook.createSheet();
}
myRow = mySheet.createRow(rowNum);
for (int cellNum = 0; cellNum < rowData.size(); cellNum++) {
myCell = myRow.createCell(cellNum);
myCell.setCellValue(rowData.get(cellNum));
}
}
System.out.println("Last row:" + mySheet.getLastRowNum());
System.out.println("Row number:" + mySheet.rowIterator().next().getRowNum());
try {
myWorkBook.write(outputStream);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Quel est le problème avec ma logique.Merci de faire le nécessaire aider.
Grâce
Contexte s'il vous plaît! Qu'est-ce que le courant de sortie? avez-vous essayé de débogage? Est
Il en est qui contiennent des données, j'ai débogué.C'est de l'écriture les 1000 premiers enregistrements de la feuille sheet1, pas de l'écriture de données restantes à feuil2 mais la création de la feuille.
Sur la feuille 2, faites défiler jusqu'à la ligne 1001 - est-il données?
C'est de l'écriture de 1001 ligne dans la feuil2, quelle est la raison?
excelData
contenant des données?Il en est qui contiennent des données, j'ai débogué.C'est de l'écriture les 1000 premiers enregistrements de la feuille sheet1, pas de l'écriture de données restantes à feuil2 mais la création de la feuille.
Sur la feuille 2, faites défiler jusqu'à la ligne 1001 - est-il données?
C'est de l'écriture de 1001 ligne dans la feuil2, quelle est la raison?
OriginalL'auteur spt | 2013-11-19
Vous devez vous connecter pour publier un commentaire.
Lorsque vous parcourez l'ensemble de données, vous êtes désireux de le couper à la ligne 1000 pour commencer une nouvelle feuille, ce qui est bien, cependant lorsque vous démarrez la nouvelle feuille, la ligne suivante vous créez est ligne 1001 (la boucle externe variable d'index)
Pour obtenir l'effet que vous souhaitez, de modifier la boucle pour être quelque chose comme ceci:
Je n'ai pas compilé, donc je ne sais pas si ça va marcher tout de suite, mais il faut vous diriger dans la bonne direction.
HTH
Modifier
De la pensée à propos de ce en outre, vous pouvez obtenir le même effet de faire un 1 changement de ligne à la demande initiale (quoique perdre un peu de clarté):
java.lang.IllegalArgumentException: Invalid row number (-999) outside allowable range (0..65535)
Désolé, ça a été une longue journée. Avoir la dernière mise à jour de la ligne - cette fois, il devrait fonctionner.
Il fonctionne très bien, mais l'en-tête(noms des colonnes) ne sont pas de l'ajout de la nouvelle feuille
Chaque fois que vous créez une nouvelle feuille, ajouter le excelData.get(0) ligne à la ligne 0. Facile 🙂 vous avez déjà le code pour le faire.
Je veux retirer la feuille, si il n'y a pas de données. Je fais comme ceci
int index=0; if(sheet.getLastRowNum()==1) { index = myWorkBook.getSheetIndex(sheet); myWorkBook.removeSheetAt(index); }
c'est la bonne approcheOriginalL'auteur Crollster