Tôi đang làm việc trên một số tệp excel khá phức tạp và gặp sự cố với việc sao chép trang tính. Bất cứ khi nào tôi cố gắng sao chép một trang tính không hoàn toàn trống, tôi nhận được thông báo sau:Sự cố khi sao chép các trang tính excel bằng JExcel API
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)
Tôi tự hỏi vấn đề ở đây là gì. Tại sao thậm chí sẽ có một hàm ".copySheet (" nếu nó không thể được sử dụng cho các trang tính với thông tin trong chúng. Trong một nỗ lực để tạo lại vấn đề trên một quy mô đơn giản hơn, tôi đã tạo mã mà bạn thấy bên dưới. xem là 2 tờ giống hệt nhau với ô (0,0) có nhãn "thử nghiệm" .Trang tính có tên là "Dòng", còn lại là "sao chép" .Tất cả ý tưởng về lý do tại sao điều này cho con trỏ rỗng này?
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();
}
}
EDIT: mã này cũng đưa ra cùng một ngoại lệ:
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();
}
}
một trong những ý tưởng của tôi về những gì có thể sai là vì một tờ được mở và đã được chỉnh sửa nó không thể được sao chép. Tôi thực sự không biết làm thế nào để có được xung quanh điều này mặc dù.
wow cảm ơn bạn! Tôi đã tìm thấy điều gì đó sai với API nhưng tôi không biết liệu các phiên bản trước có hữu ích hay không. –
@Yourchanges, Vui lòng kiểm tra cho tôi (http://stackoverflow.com/questions/17078543/error-occured-in-copying-excel-sheet-with-jexel-api) – Cataclysm