2012-03-31 22 views
6

ile excel sayfalarını kopyalamakta sorun Oldukça karmaşık olan bazı excel dosyaları üzerinde çalışıyordum ve kopyalanan sayfalarda bir sorunla karşılaştım. Ben şu iletiyi alır tamamen boş olmayan bir sayfayı kopyalamak istediğimde: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) 

Burada sorunun ne merak ediyorum. Neden bir ".copySheet" fonksiyonu bile olsa, bunlar içinde bilgi içeren sayfalar için kullanılamazsa, problemi daha basit bir ölçekte yeniden üretme girişimi altında, aşağıda gördüğünüz kodu oluşturdum. hücre (0,0) etiketi olan "test" ile 2 özdeş yaprak bkz. adlandırılmış bir levha neden bu boş gösterici veriyor etmek gibi başka, "kopya". Herhangi bir fikir "Akışları"?

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(); 
    } 
} 

DÜZENLEME: Bu kod aynı istisna verir:

yanlış olabilir ne fikrimi
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(); 
    } 
} 

biri bir levha açıktır ve düzenlenmiş olduğundan ise edemeyeceğini kopyalanamaz. Bu konuda nasıl geçeceğimi gerçekten bilmiyorum.

cevap

9

kopyalamadan önce sayfayı kopyalamak için bazı hücreleri eklemek yerine JXL-2.6.10.jar kullanın.

Detayları:

yazım hatası '&'

hattı 493 içine '& &' - hat 504 WritableSheetCopier.java

yılında
if (c != null) 
      { 
      toSheet.addCell(c); 

      // Cell.setCellFeatures short circuits when the cell is copied, 
      // so make sure the copy logic handles the validated cells   
      if (c.getCellFeatures() != null & 
       c.getCellFeatures().hasDataValidation()) 
      { 
       validatedCells.add(c); 
      } 
      } 

hat 540 - WritableSheetCopier.java

satır 551
if (c != null) 
      { 
      toSheet.addCell(c); 

      // Cell.setCellFeatures short circuits when the cell is copied, 
      // so make sure the copy logic handles the validated cells   
      if (c.getCellFeatures() != null & 
       c.getCellFeatures().hasDataValidation()) 
      { 
       validatedCells.add(c); 
      } 
      } 

satır 990 - satır 1001, SheetCopier.java

if (c != null) 
      { 
      toSheet.addCell(c); 

      // Cell.setCellFeatures short circuits when the cell is copied, 
      // so make sure the copy logic handles the validated cells 
      if (c.getCellFeatures() != null & 
       c.getCellFeatures().hasDataValidation()) 
      { 
       validatedCells.add(c); 
      } 
      } 
+1

Vay teşekkür ederim! API ile ilgili bir sorun olduğunu düşündüm ancak önceki sürümlerin yardımcı olup olmayacağını bilmiyordum. –

+0

@Yourchanges, Lütfen bunun için bana bir göz atın (http://stackoverflow.com/questions/17078543/error-occured-in-copying-excel-sheet-with-jexel-api) – Cataclysm

0

kopya levha boştur, O JXL-2.6.12.jar bir hata var

+0

Yanılıyor olabilirim ama sanırım. Index 0 olan rSheet'e bir hücre ekliyorum. Daha sonra copySheet'i çağırdığımda, 0 dizinindeki sayfadan kopyalama yapıyor ve 0 dizinindeki newSheet'i sağa mı alıyorsunuz? Ive, outputBook.copySheet'i (0, "copy", 1) çalıştı; kopyayı dizin 1'e koymak ancak bu aynı hatayı verir. –