写入时jexcel的空指针异常

时间:2013-09-04 14:00:57

标签: java jexcelapi

我需要使用JExcel将内容附加到现有的excel文件。

我正在尝试以下方法:

  1. 从现有工作簿中读取

    workbook = Workbook.getWorkbook(new File(errorFilePath));
    
  2. 从exisitng工作簿创建可写工作簿到临时文件

    if (!tempFile.exists()) {
       tempFile.getParentFile().mkdirs();
       tempFile.createNewFile();
    }
    newCopy = Workbook.createWorkbook(tempFile, workbook);
    excelSheet = newCopy.getSheet(0);
    
  3. 写入可写工作簿(时间是可写单元格格式变量)

    Label label;
    label = new Label(column, row, stringData, times);
    excelSheet .addCell(label);
    
  4. 关闭exisitng和可写工作簿 - >删除exisitng工作簿 在最后一个块 - >将临时文件名重命名为现有(现已删除)工作簿名称

     finally {
            if (null != newCopy) {
                newCopy.write();
                newCopy.close();
            }
            if (null != workbook) {
                workbook.close();
            }
            if (null != errorFile && errorFile.exists()) {
                errorFile.delete();
            }
            if (null != tempFile) {
                tempFile.renameTo(new File(errorFilePath));
            }
    
        }
    

    问题是第一次运行(没有重新部署)一切正常。 但每当我更改一些java代码,并重新部署Web应用程序时,我会在关闭新创建的工作簿时(写完后)获得空指针异常。

  5. 我得到以下堆栈跟踪(源自行newCopy.write())

       java.lang.NullPointerException
    at jxl.write.biff.CellValue.getData(CellValue.java:259)
    at jxl.write.biff.LabelRecord.getData(LabelRecord.java:141)
    at jxl.biff.WritableRecordData.getBytes(WritableRecordData.java:71)
    at jxl.write.biff.File.write(File.java:147)
    at jxl.write.biff.RowRecord.writeCells(RowRecord.java:329)
    at jxl.write.biff.SheetWriter.write(SheetWriter.java:479)
    at jxl.write.biff.WritableSheetImpl.write(WritableSheetImpl.java:1514)
    at jxl.write.biff.WritableWorkbookImpl.write(WritableWorkbookImpl.java:950)
    

    Java版本:1.6

    JExcel版本:2.6.10

    Windows 7

2 个答案:

答案 0 :(得分:0)

嗯,首先怀疑是,在这一行:

label = new Label(column, row, stringData, times);

你传递了null个参数。

答案 1 :(得分:0)

我遇到了同样的问题。 我试图使用 insertRow 在循环中动态地向表单添加行。花了几个小时后,这可能是最新版本的jxl api中的一个错误。 2.6.9之后的JXL api似乎在insertRow中有bug。我从2.6.12切换到2.6.9。