首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java - XSSF。NullPointerException

java - XSSF。NullPointerException
EN

Stack Overflow用户
提问于 2016-02-28 03:50:08
回答 1查看 1.4K关注 0票数 0

我正在为下面的代码获取NullPointerException。有人能帮个忙吗?我正在尝试将数据库值添加到现有的excel工作表中。

代码语言:javascript
复制
Statement statement = connect.createStatement();
  ResultSet resultSet = statement.executeQuery("select * from basicinfo");
  FileInputStream fis = new FileInputStream(new File("exceldatabase.xlsx"));
  XSSFWorkbook workbook = new XSSFWorkbook(fis); 
  XSSFSheet spreadsheet = workbook.getSheetAt(0);
  XSSFRow row=spreadsheet.getRow(2);
  XSSFCell cell;
  cell=row.getCell(2);
  cell.setCellValue("user_name");
  cell=row.getCell(3);
  cell.setCellValue("email");
  cell=row.getCell(3);
  cell.setCellValue("phonenum");
  cell=row.getCell(4);
  cell.setCellValue("address");
EN

回答 1

Stack Overflow用户

发布于 2016-02-29 01:09:27

您需要创建行和单元格对象:

代码语言:javascript
复制
  XSSFRow row=spreadsheet.createRow(2);
  XSSFCell cell;
  cell=row.createCell(2);
  cell.setCellValue("user_name");
  cell=row.createCell(3);
  cell.setCellValue("email");
  cell=row.createCell(3);
  cell.setCellValue("phonenum");
  cell=row.createCell(4);
  cell.setCellValue("address");

如果您要打开现有的笔记本,并且行/单元格/工作表可能存在,则需要如下内容:

代码语言:javascript
复制
Sheet sheet=workbook.getSheet("foo");
if (sheet==null){
  sheet=workbook.createSheet("foo");
}
Row row=sheet.getRow(2);
if (row==null){
  row=sheet.createRow(2);
}
Cell cell=row.getCell(12);
if (cell==null){
  cell=row.createCell(12);
}
cell.setValue("phonenum");

当然,您可能应该创建一些助手方法,如下所示:

代码语言:javascript
复制
private Sheet getOrCreateSheet(Workbook workbook, String sheetName){
  Sheet sheet=workbook.getSheet(sheetName);
  if (sheet==null){
    sheet=workbook.createSheet(sheetName);
  }
 return sheet;
}

private Row getOrCreateRow(Sheet sheet, int rowIndex){
  Row row=sheet.getRow(rowIndex);
  if (row==null){
    row=sheet.createRow(rowIndex);
  }
  return row;
}

private Cell getOrCreateCell(Row row, int colIndex){
  Cell cell=row.getCell(colIndex);
  if (cell==null){
    cell=row.createCell(colIndex);
  }
  return cell;
}

然后上面的代码就变得更加整洁了:

代码语言:javascript
复制
Sheet sheet=getOrCreateSheet(workbook, "foo");
Row row=getOrCreateRow(sheet, 2);
Cell cell=getOrCreateCell(row, 12);
cell.setValue("phonenum");
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35674650

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档