2012-03-11 17 views
5

jxl kullanarak bir excel dosyası oluşturuyorum. İlk başta stilleri hakkında sadece bazı biçimlendirme ve bilgi içermelidir. Daha sonra, birisi ona yeni veri eklediğinde güncellenmelidir. Sadece birleştirilmiş hücrelerle dosyasınıBir Excel dosyasına jxl kullanarak veri ekleme

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

    } 
} 

Ama boş bir Excel ile sona:

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

Ben beni dosyaya erişmek izin vermedi ve ona bazı verileri eklersiniz başka bir sınıf gerektiğini anlıyoruz.

Değişiklikleri nasıl tanıtabilirim?

+1

bir çözüm [Apache POI] (http://poi.apache.org/) geçmek için, sadece tavsiye yok. – Kai

+1

Sadece temel işlemler, jxl iyi olmalı. – Hurdler

cevap

0

Eğer w2 için sınıfın bir üyesi olmayan bir WritableWorkbook nesne işleme yaptığınızdan, size modify() yöntem geçersiz ancak bunun yerine bir WritableWorkbook döndürmez olmasın?

Gördüğüm kadarıyla, modify() numaralı telefonu aradığınızda yeni bir tanışma gelmiyor, ancak sonuçta tüm değişiklikler kapsam yüzünden düşüyor. Sonunda

oldukça temelde

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

gibi bir şey alırsınız. Ve addNumber için benzer bir değişiklik de görünüyor. Daha sonra ilgili aramalar, sheet = addNumber(sheet, cols, rows, 2); ve w2 = modify(w2);

0

JExcel API kullanarak Java'da Nasıl Okunup Yazılır? Adım adım olarak ilk önce bir excel Çalışma Kitabı oluşturmamız gerekiyor ve bir sonraki adım, Sheet (Sayfa) oluşturmak ve sayfaya sayfa eklemek.

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

onay tam bir örnek http://www.websparrow.org/tutorials/java/how-to-read-and-write-excel-file-in-java