null pointer exception apache poi
salut, nous avons lu xls et xlsx fichier à l'aide d'apache poi tion de notre programme java, le problème est que nous obtenons exception de pointeur null avec les deux raisons ... la première 1 est la cellule vide dont nous avons déjà résolu et les autres, c'est quand nous faisons le choix d'une certaine colonne qui n'ont pas de record..
notre programme vous demande le chemin pour le fichier excel, puis la fiche spécifique numéro de fichier et le numéro de colonne de la feuille que vous souhaitez lire.. ici c'est le code pour lire fichier xls
public void readXLSFile()throws IOException{
InputStream ExcelFileToRead = new FileInputStream(path);
HSSFWorkbook wb = new HSSFWorkbook(ExcelFileToRead);
HSSFSheet sheet=wb.getSheetAt(sheetname);
HSSFRow row;
HSSFCell cell;
Iterator rows = sheet.rowIterator();
list1.clear();
while (rows.hasNext())
{
headers.clear();
row=(HSSFRow) rows.next();
//Iterator cells = row.cellIterator();
headers.add("contents");
cnt = cnt+1;
cell = row.getCell(cols);
if (cell.getCellType() == HSSFCell.CELL_TYPE_STRING)
{
//System.out.println(cell.getStringCellValue()+"(string)");
list.add(cell.getStringCellValue());
d.add(cell.getStringCellValue());
list1.add(new KeyValuePair(cell.getStringCellValue(),""));
}
else if(cell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC)
{
//System.out.println(cell.getNumericCellValue()+"(numeric)");
double num = cell.getNumericCellValue();
String num2 = String.valueOf(num);
list.add(num2);
d.add(num2);
list1.add(new KeyValuePair(num2,""));
}
else if(cell.getCellType() == HSSFCell.CELL_TYPE_BOOLEAN)
{
//System.out.println(cell.getBooleanCellValue()+"(boolean)");
String bool = String.valueOf(cell.getBooleanCellValue());
list.add(bool);
d.add(bool);
list1.add(new KeyValuePair(bool,""));
}
else
{
//U Can Handel Boolean, Formula, Errors
}
//System.out.println();
}
arrey = list.toArray(new String[list.size()]);
data.add(d);
//System.out.println(data);
model = new DefaultTableModel();
table_1.setModel(model);
table_1.setModel(model);
model.setColumnIdentifiers(new String[] {"row","contents"});
for (KeyValuePair p : list1){
int nor=table_1.getRowCount();
int n2 = nor +1;
n1 = Integer.toString(n2);
// model.addColumn(new String [] {n1});
model.addRow(new String[] {n1,p.key, p.value});
}
// model.addColumn(new String[] {n1});
}
la variable sheetname est pour le fichier excel du numéro de la feuille de
HSSFSheet sheet=wb.getSheetAt(sheetname);
et la variable cols est pour la colonne que vous souhaitez lire
cell = row.getCell(cols);
on peut lire la première colonne de chaque feuille, et aussi la seconde colonne de la deuxième feuille, mais quand j'ai édité mon fichier de test dès maintenant le programme peut lire uniquement la première colonne de chaque feuille.. l'erreur est null pointer exception..le souhaitez vous pouvez aider merci d'avance
C'est un peu déroutant... Vous utilisez
sheetname
qui semble être une Chaîne de caractères avec HSSFSheet sheet=wb.getSheetAt(sheetname);
. getSheetAt
est toujours d'accepter la valeur numérique de la feuille d'index. S'il vous plaît confirmer.c'est la seule erreur je suis de java.lang.NullPointerException par le chemin, je entourent la méthode mentionnée ci-dessus à essayer de l'attraper..
le sheetname variable et les cols sont deux entiers cause il accepte uniquement numérique je viens de nommé de cette façon, désolé si cela vous semble confus 🙂
Peut-être que vous pouvez partager la ligne où l'erreur se produit et la stacktrace.
OriginalL'auteur y.reyes | 2013-08-06
Vous devez vous connecter pour publier un commentaire.
Le problème, c'est que vous n'avez jamais testé si la cellule est nul!
En général, vous devez être prudent lors de la manipulation
Cell.getCellType()
fonction, depuis une cellule vide pourrait êtrenull
ou être unCELL_TYPE_BLANK
.Vous pouvez spécifier un MissingCellPolicy si vous voulez contrôler la façon dont vides ou les cellules manquantes sont retournées à vous
OriginalL'auteur ArtiBucco
Ce ma façon de l'éviter de la Cellule NullPoiterException.
Pouvez-vous l'essayer. Bonne chance!
OriginalL'auteur iCrazybest