2012-03-11 16 views
5

jxl을 사용하여 Excel 파일을 만듭니다. 처음에는 스타일에 대한 형식 및 정보 만 포함해야합니다. 그런 다음 누군가가 새로운 데이터를 추가 할 때마다 업데이트되어야합니다. 단지 병합 된 셀에 파일을jxl을 사용하여 Excel 파일에 데이터 추가

class Modify { 

    private static Logger logger = Logger.getLogger(Modify.class); 
    private File inputWorkbook; 
    private File outputWorkbook; 

    public Modify(String input, String output) { 
     inputWorkbook = new File(input); 
     outputWorkbook = new File(output); 
     logger.info("Input file: " + input); 
     logger.info("Output file: " + output); 
    } 

    public void readWrite() throws IOException, BiffException, WriteException { 
     logger.info("Reading..."); 
     Workbook w1 = Workbook.getWorkbook(inputWorkbook); 

     logger.info("Copying..."); 
     WritableWorkbook w2 = Workbook.createWorkbook(outputWorkbook, w1); 

     if (inputWorkbook.getName().equals("test.xls")) { 
      modify(w2); 
     } 

     w2.write(); 
     w2.close(); 
     logger.info("Done"); 
    } 

    private void modify(WritableWorkbook w) throws WriteException { 
     logger.info("Modifying..."); 

     WritableSheet sheet = w.getSheet("First"); 

     //createContent(sheet); // contains methods responsible for adding data, for example: 
     addNumber(sheet, cols, rows, 2); 

    private static void addNumber(WritableSheet sheet, int column, int row, double d) throws WriteException, RowsExceededException { 
     Number number; 
     number = new Number(column, row, d, timesStandard); 
     sheet.addCell(number); 

    } 
} 

을하지만 빈 Excel 끝낼 :

public class WriteExcel { 

    private static WritableWorkbook workbook; 
    private static WritableCellFormat timesStandard; 
    private String inputFile; 
    final private static int FONT_SIZE = 12; 


    public void setOutputFile(String inputFile) { 
     this.inputFile = inputFile; 
    } 

    private void prepareSheet(WritableSheet sheet) throws WriteException { 
     sheet.mergeCells(0, 0, 1, 0); 
     sheet.mergeCells(3, 0, 4, 0); 
     sheet.mergeCells(6, 0, 7, 0); 

     WritableFont times12pt = new WritableFont(WritableFont.TIMES, FONT_SIZE); 
     timesStandard = new WritableCellFormat(times12pt); 

     CellView cv = new CellView(); 
     cv.setFormat(timesStandard); 
    } 

    public void write() throws IOException, WriteException { 
     File file = new File(inputFile); 
     WorkbookSettings wbSettings = new WorkbookSettings(); 
     wbSettings.setLocale(new Locale("en", "EN"));  

     WritableWorkbook workbook = Workbook.createWorkbook(file, wbSettings); 
     workbook.createSheet("First", 0); 
     WritableSheet excelSheet = workbook.getSheet(0); 
     prepareSheet(excelSheet); 

     workbook.write(); 
     workbook.close(); 
    } 

    public static void main(String[] args) throws WriteException, IOException { 
     WriteExcel test = new WriteExcel(); 
     test.setOutputFile("c:/Users/H/Desktop/test.xls"); 
     test.write(); 
    } 
} 

는 내가 나 파일에 액세스 할 수 있으며 일부 데이터를 추가 할 다른 클래스를 필요로 이해합니다.

수정 사항을 어떻게 소개합니까?

+1

나는 해결책을 [아파치 POI (http://poi.apache.org/)로 전환하는 단지 권고 사항이 없습니다. – Kai

+1

그것은 단지 기본 작업이므로 jxl은 괜찮을 것입니다. – Hurdler

답변

0

당신이 w2에 대한 클래스의 구성원이 아닌 WritableWorkbook 객체를 조작하고 있기 때문에, 당신은 당신의 modify() 방법은 무효가 있지만, 대신 WritableWorkbook를 반환하지 말았어야?

내가보기에 modify()으로 전화를 걸면 범위가 변경되므로 끝에있는 모든 변경 사항이 취소됩니다. 결국

당신은 아주 기본적으로

private WritableWorkbook modify(WritableWorkbook w) throws WriteException { 
    logger.info("Modifying..."); 

    WritableSheet sheet = w.getSheet("First"); 

    //createContent(sheet); // contains methods responsible for adding data, for example: 
    addNumber(sheet, cols, rows, 2); 
    return sheet; 
    } 

같은 것을 얻을 것이다. addNumber에 대해서도 비슷한 수정이 순서대로 진행됩니다. 그러면 각각의 호출은 sheet = addNumber(sheet, cols, rows, 2);w2 = modify(w2);

0

입니다. JExcel API를 사용하여 Java에서 Excel 파일을 읽고 쓰는 방법. 먼저 단계별로 수행하면 Excel 통합 문서를 만들고 추가 단계에서는 시트를 만들고 시트에 내용을 추가해야합니다.

WritableWorkbook writableWorkbook = null; 
writableWorkbook = Workbook.createWorkbook(new File("WebSparrow.xls")); 
Workbook wb = null; 
wb = Workbook.getWorkbook(new File("WebSparrow.xls")); 

체크 전체 예를 http://www.websparrow.org/tutorials/java/how-to-read-and-write-excel-file-in-java

관련 문제