我正在处理一些相当复杂的 excel 文件,但在复制工作表时遇到了问题。每当我尝试复制不是完全空白的工作表时,我都会收到以下消息:
Exception in thread "main" java.lang.NullPointerException
at jxl.write.biff.WritableSheetCopier.shallowCopyCells(WritableSheetCopier.java:499)
at jxl.write.biff.WritableSheetCopier.copySheet(WritableSheetCopier.java:239)
at jxl.write.biff.WritableSheetImpl.copy(WritableSheetImpl.java:1622)
at jxl.write.biff.WritableWorkbookImpl.copySheet(WritableWorkbookImpl.java:987)
at excelCalc.main(excelCalc.java:18)
我想知道这里的问题是什么。如果不能将“.copySheet(”函数用于其中包含信息的工作表,为什么还会有它。为了以更简单的规模重现问题,我创建了您在下面看到的代码。我期望的输出看到的是两张相同的表,其中单元格(0,0)的标签为“test”。一张名为“Flows”,另一张名为“copy”。关于为什么给出这个空指针的任何想法?
import java.io.File;
import jxl.*;
import jxl.write.*;
public class excelCalc
{
public static void main(String[] args) throws Exception
{
WritableWorkbook outputBook = Workbook.createWorkbook(new File("C:/Users/Kevin Brey/CS243/ExcelTest/files/output", "output.xls"));
WritableSheet rSheet = outputBook.createSheet("Flows", 0);
rSheet.addCell(new Label(0, 0, "test"));
outputBook.copySheet(0, "copy", 0);
outputBook.write();
outputBook.close();
}
}
编辑:这段代码也给出了同样的例外:
import java.io.File;
import jxl.*;
import jxl.write.*;
public class excelCalc
{
public static void main(String[] args) throws Exception
{
WritableWorkbook outputBook = Workbook.createWorkbook(new File("C:/Users/Kevin Brey/CS243/ExcelTest/files/output", "output.xls"));
WritableSheet sheet1 = outputBook.createSheet("Sheet1", 0);
WritableSheet sheet2 = outputBook.createSheet("Sheet2", 1);
sheet1.addCell(new Label(0, 0, "Label1"));
sheet2.addCell(new Label(0, 0, "Label2"));
outputBook.copySheet(0, "Copy", 1);
outputBook.write();
outputBook.close();
}
}
我对可能出错的一个想法是,由于工作表已打开且已被编辑,因此无法复制。我真的不知道如何解决这个问题。