2012-05-09 2 views
3

기존 Excel 파일을 편집 할 때 jxl api를 사용하고 있습니다. 하지만 난 새 열을 추가하고 그 널 포인터 예외를 보여주는 시트를 작성하려고합니다.jxl api를 사용하여 기존 Excel 파일에 새 열 삽입

File file = new File("d:\\test.xls"); 
Workbook workbook; 
WritableWorkbook copy = null; 
if (file.exists()) { 

    try { 
     workbook = Workbook.getWorkbook(file); 
     copy = Workbook.createWorkbook(new File("C:\\TEMP\\temp.xls"), 
       workbook); 
    } catch (BiffException e) { 

     e.printStackTrace(); 
    } catch (FileNotFoundException fnf) { 
     fnf.printStackTrace(); 

    } catch (IOException e) { 

     e.printStackTrace(); 
    } 

} 
WritableSheet sheet = copy.getSheet(0); 

sheet.insertColumn(2); //this statement causes error 
         //if I comment it the code works fine 

try { 
    copy.write(); 
    copy.close(); 
} 
catch(Exception e) 
{ 

    e.printStackTrace(); 
} 

날이 문제를 해결하고 새로운 열을 삽입하기 위해 도와주세요 : 아래 그림과 같이 내가 사용 코드입니다.

Excel의 단일 셀을 성공적으로 편집하고 파일을 쓸 수 있습니다.

답변

2

아마 당신이 사용하는 API가 최선이 아닙니다. 나 또한 jexcelapi을 다운로드하기 전까지는이 문제 (insertcolumn 라인의 nullpointer 예외)가 있었고 couldnt는 모든 해결책을 찾았다.

HTH

그것은 JXL 불가능
2

위의 코드는 내 컴퓨터에서 정상적으로 동작 할 수 있습니다. 예외 정보를 알려주고 여기에 전체 코드를 넣어 두는 것이 좋습니다.

+0

있습니다. – Jaison

1

우리는 InsertRow를() 또는 insertColumn() 메소드가하는 일에 내가 분명하지 않다 this-

Workbook aWorkBook = Workbook.getWorkbook(new File("Originalfile.xls")); 
     WritableWorkbook aCopy = Workbook.createWorkbook(new File("Originalfile.xls"), aWorkBook); 
     WritableSheet aCopySheet = aCopy.getSheet(0);//index of the needed sheet 
     WritableCell aWritableCell = aCopySheet.getWritableCell(1,1);//no need! 
     jxl.write.Label anotherWritableCell = new jxl.write.Label(1,12 ,"SUN"); 
       //position of the new cell in column,row 
      //can be a new Label() or new Number() or new Formula 

      aCopySheet.addCell(anotherWritableCell); 

     aCopy.write(); 
     aCopy.close(); 

같은 새로운 셀 따라서 새 행/열을 삽입 할 수 있습니다. 도움이 되었기를 바랍니다.

+0

이 솔루션은 새 셀을 작성하려는 경우 잘 작동합니다. 하지만 내 파일에는 이미 값이 들어 있으며 새 열을 삽입하고 싶습니다. 즉 현재 파일에있는 모든 정보가 다음 열로 이동해야합니다. – Jaison

+0

이 코드는 기존의 Excel 파일에 셀을 쓰고 싶을 때 유용합니다. 처음에는 기존 행을 먼저 읽어야합니다. 마지막 행의 데이터를 가져옵니다. 위의 코드를 사용하여 새 행을 삽입하고 채 웁니다. 마지막 셀의 데이터가있는 새 셀과 마지막 셀 데이터를 마지막 행에 쓰십시오. 따라서 모두 위의 코드에 더 많은 로직을 추가해야합니다.

0

, 당신은

JXL으로 (무엇이있는 경우 또는 뭔가 다른) 당신이 읽기 전용 또는 통합 문서를 작성할 수 아파치 POIhttp://poi.apache.org/ 를 사용해야합니다 기존의 것을 편집하지 마십시오. 통합 문서를 복사하고 새로 만든 편집 할 수도 있습니다. WritableWorkbook newWorkbook = Workbook.createWorkbook (newFile, workbookTemplate, wbSettings); 하지만 jxl을 사용할 때 내 모든 AutoFilters를 형식화하는 작업을 많이하게 될 것입니다.

큰 예는이 파일에 데이터 필터를 추가 한 후 작동하는 경우 file.Pls의 데이터 필터를 확인 추가 할 때까지 작동 여기 http://poi.apache.org/spreadsheet/quick-guide.html http://www.kodejava.org/browse/49.html

관련 문제