Pracowałem nad dość złożonymi plikami excela i napotkałem problem z kopiowaniem arkuszy. Ilekroć próbuję skopiować arkusz, który nie jest całkowicie puste i otrzymaliśmy następującą wiadomość:Problemy z kopiowaniem arkuszy Excela za pomocą 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)
Zastanawiam się, co jest tutaj problemem. Dlaczego miałaby istnieć funkcja ".copySheet (", gdyby nie można jej było użyć do arkuszy z zawartymi w niej informacjami.Aby spróbować odtworzyć problem w prostszej skali, stworzyłem kod, który widzisz poniżej. widzę to 2 identyczne arkusze z komórki (0,0) o etykietę „test”. Jeden arkusz o nazwie „płynie” z drugiej strony, „kopia”. Wszelkie pomysły, dlaczego to daje to wskaźnik zerowy?
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: Ten kod daje również ten sam wyjątek:
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();
}
}
Jednym z moich pomysłów co może być nie tak jest, że skoro arkusz jest otwarty i został stworzony nie może być skopiowane. Naprawdę nie wiem, jak sobie z tym poradzić.
wow, dziękuję! Pomyślałem, że coś jest nie tak z API, ale nie wiedziałem, czy poprzednie wersje pomogłyby. –
@Yourchanges, Proszę sprawdź mnie (http://stackoverflow.com/questions/17078543/error-occured-in-copying-excel-sheet-with-jexel-api) – Cataclysm