hi chúng tôi đã đọc xls và xlsx tập tin bằng cách sử dụng apache poi ing chương trình java của chúng tôi, vấn đề là chúng tôi đang nhận được ngoại lệ con trỏ null với hai lý do .. đầu tiên 1 là ô trống mà chúng tôi đã giải quyết và cách khác là khi chúng tôi chọn một cột nhất định không có bất kỳ bản ghi nào ..không có con trỏ ngoại lệ apache poi
chương trình của chúng tôi yêu cầu đường dẫn của tệp excel sau đó số trang tính cụ thể của tệp và số cột cụ thể của trang tính bạn muốn đọc .. dưới đây là mã để đọc tệp 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});
}
biến sheetname là cho trang tính của tệp excel ber
HSSFSheet sheet=wb.getSheetAt(sheetname);
và cols biến là cho cột cụ thể mà bạn muốn đọc
cell = row.getCell(cols);
chúng ta có thể đọc cột đầu tiên của mỗi tờ và cũng là cột thứ hai của bảng thứ hai nhưng khi tôi thay đổi nội dung tập tin thử nghiệm của tôi chương trình bây giờ chỉ có thể đọc cột đầu tiên của mỗi tờ .. lỗi là null con trỏ ngoại lệ .. bạn có thể giúp cảm ơn trước
bạn có thể in theo dõi ngăn xếp của ngoại lệ hay không. Tôi sẽ giúp đỡ nếu chúng ta có thể biết được tuyên bố nào thực sự gây ra ngoại lệ. –
Hơi khó hiểu một chút ... Bạn đang sử dụng 'sheetname' có vẻ như là một String với' HSSFSheet sheet = wb.getSheetAt (sheetname); '. 'getSheetAt' luôn chấp nhận giá trị số cho chỉ mục trang tính. Vui lòng xác nhận. – Sankumarsingh
đây là lỗi duy nhất im nhận được java.lang.NullPointerException bằng cách này, tôi bao quanh phương pháp được đề cập ở trên để thử bắt .. –