Hallo haben wir xls und xlsx Datei lesen mit Apache Poi in unserem Java-Programm, das Problem ist, dass wir null Zeiger Ausnahme mit zwei Gründen bekommen .. die erste 1 ist die leere Zelle, die wir bereits gelöst und der andere ist, wenn wir eine bestimmte Spalte auswählen, die keinen Datensatz hat ..Null Zeiger Ausnahme Apache Poi
unser Programm fragt nach dem Pfad der Excel-Datei dann die spezifische Blattnummer der Datei und die spezifische Spaltennummer von das Blatt, das Sie .. hier lesen wollen, ist der Code für
xls-Datei zu lesenpublic 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});
}
die Variable Sheetname für das Blatt num die Excel-Datei ist ber
HSSFSheet sheet=wb.getSheetAt(sheetname);
und die variablen cols ist für die spezifische Spalte Sie
cell = row.getCell(cols);
wir lesen können, die erste Spalte von jedem Blatt und auch die zweite Säule des zweiten Blattes lesen mögen, aber wenn ich bearbeiten mein Test nun die Programmdatei nur die erste Spalte von jedem Blatt lesen kann .. der Fehler null-Zeiger exception..wish Sie dank im Voraus
können Sie den Stack-Trace der Ausnahme drucken. Ich werde helfen, wenn wir wissen könnten, welche Aussage tatsächlich eine Ausnahme verursacht. –
Es ist ein wenig verwirrend ... Sie verwenden 'sheetname', der ein String mit' HSSFSheet sheet = wb.getSheetAt (sheetname); 'zu sein scheint. 'getSheetAt' akzeptiert immer numerischen Wert für Blatt Index. Bitte bestätigen. – Sankumarsingh
Dies ist der einzige Fehler im bekommen java.lang.NullPointerException nebenbei, ich umrunden die oben genannten Methode in Versuch fangen .. –