apache poi cellIterator ignore les cellules vides, mais pas en première ligne
Je suis entrain de créer un programme java pour lire une feuille excel et créer un fichier séparé par des virgules. Quand je lance mon exemple de fichier excel, avec des colonnes vides, La première ligne fonctionne parfaitement, mais le reste des lignes ignorer les cellules vides.
J'ai lu sur les modifications de code nécessaires pour insérer les cellules vides dans les lignes, mais ma question est pourquoi la première ligne de travail ????
public ArrayList OpenAndReadExcel(){
FileInputStream file = null;
HSSFWorkbook workBook = null;
ArrayList <String> rows = new ArrayList();
//open the file
try {
file = new FileInputStream(new File("Fruity.xls"));
} catch (FileNotFoundException e) {
//TODO Auto-generated catch block
System.out.println("Could not open Input File");
e.printStackTrace();
}
// open the input stream as a workbook
try {
workBook = new HSSFWorkbook(file);
} catch (IOException e) {
//TODO Auto-generated catch block
System.out.println("Can't Open HSSF workbook");
e.printStackTrace();
}
//get the sheet
HSSFSheet sheet = workBook.getSheetAt(0);
//add an iterator for every row and column
Iterator<Row> rowIter = sheet.rowIterator();
while (rowIter.hasNext())
{
String rowHolder = "";
HSSFRow row = (HSSFRow) rowIter.next();
Iterator<Cell> cellIter = row.cellIterator();
Boolean first =true;
while ( cellIter.hasNext())
{
if (!first)
rowHolder = rowHolder + ",";
HSSFCell cell = (HSSFCell) cellIter.next();
rowHolder = rowHolder + cell.toString() ;
first = false;
}
rows.add(rowHolder);
}
return rows;
}
public void WriteOutput(ArrayList<String> rows) {
//TODO Auto-generated method stub
PrintStream outFile ;
try {
outFile = new PrintStream("fruity.txt");
for(String row : rows)
{
outFile.println(row);
}
outFile.close();
} catch (FileNotFoundException e) {
//TODO Auto-generated catch block
e.printStackTrace();
}
}
}
-----
mon Entrée dans .fichier xls (Désolé ne sais pas comment insérer un tableau excel ici )
Nom >>>>>>>>>> Pays d'Origine >>>>>>>>> État d'origine >>>>>>> Classe>>>>>> Pas de mois
Apple >>>>>>>> USA >>>>>>>>>>>>>>>>>>>>>> Washington >>>>>>>>>>>>>> A >>>>>>>>> 6
orange >>>>>> USA >>>>>>>>>>>>>>>>>>>>>> de la Floride >>>>>>>>>>>>>>>>> A >>>>>>>>> 9
ananas>>>>> USA >>>>>>>>>>>>>>>>>>>>>> Hawaii >>>>>>>>>>>>>>>>>> B >>>>>>>>> 10
fraise>>>> USA >>>>>>>>>>>>>>>>>>>>>> New Jersey>>>>>>>>>>>>>> C >>>>>>>>>> 3
mon fichier texte de sortie
Le nom ,le Pays d'Origine,État d'origine,,,Grade,Aucun de mois
Apple,états-unis,Washington,6.0
orange,états-unis,en Floride,A,9.0
ananas,etats-unis,Hawaï,B,10.0
fraise,etats-unis,dans le New Jersey,C,3.0
Notice the two extra commas before the Grade column... This is because I have two blank columns there.<br/>
Ces virgules sont manquants dans le reste de la production.
Je suis à l'aide d'Apache Poi-3.9-20121203.jar
- compris celui-ci. C'est la mise en forme... la Première ligne est le titre qui est en GRAS... le GRAS est applicable même pour les colonnes vides... Alors ces colonnes étaient supposés avoir de la valeur à blanc et ne pas nul... merci
- Vous pouvez modifier le texte de la question.
Vous devez vous connecter pour publier un commentaire.
Vous devriez avoir une lecture du Itération Sur les Lignes et les Cellules de la documentation sur le site web de Apache POI.
La CellIterator, vous obtiendrez uniquement les cellules qui ont été définis dans le fichier, qui consiste principalement à ceux avec soit de valeurs ou de mise en forme. Le format de fichier excel est rare, et ne prend pas la peine de stocker les cellules qui n'ont ni les valeurs, ni la mise en forme.
Pour votre cas, vous devez disposer de la mise en forme appliquée à la première ligne, ce qui les amène à se manifester.
Vous avez besoin de lire le la documentation et de passer à des recherches par index. Qui vous permettra également le plein contrôle sur la façon dont vide vs jamais utilisé les cellules sont traitées dans votre code.