2012-03-11 24 views
5

Tôi đang tạo tệp excel bằng cách sử dụng jxl. Ban đầu chỉ nên chứa một số định dạng và thông tin về kiểu. Sau đó, nó sẽ được cập nhật mỗi khi ai đó thêm dữ liệu mới vào nó.Thêm dữ liệu vào tệp Excel bằng cách sử dụng jxl

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

Tôi hiểu rằng tôi cần một lớp mà có thể cho tôi truy cập vào các tập tin và thêm một số dữ liệu vào nó:

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

    } 
} 

Nhưng tôi kết thúc với một tính Excel trống nộp với chỉ các tế bào sáp nhập.

Làm cách nào để giới thiệu các sửa đổi?

+1

Tôi không có một giải pháp chỉ đề nghị chuyển sang [Apache POI] (http://poi.apache.org/). – Kai

+1

Chỉ hoạt động cơ bản, jxl sẽ ổn thôi. – Hurdler

Trả lời

0

Vì bạn đang điều khiển đối tượng WritableWorkbook không phải là thành viên trong lớp của bạn cho w2, bạn không nên có phương pháp modify() của mình không bị vô hiệu nhưng thay vì trả lại WritableWorkbook?

Như tôi thấy, một cái mới được instanciated khi bạn gọi modify() nhưng tất cả thay đổi ở cuối được giảm do phạm vi.

Cuối cùng bạn sẽ nhận được một cái gì đó giống như

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

khá cơ bản. Và một sửa đổi tương tự cho addNumber có vẻ theo thứ tự quá. Sau đó, các cuộc gọi tương ứng sẽ là sheet = addNumber(sheet, cols, rows, 2);w2 = modify(w2);

0

Cách đọc và ghi tệp Excel trong Java bằng cách sử dụng API JExcel. Làm như từng bước đầu tiên chúng ta cần tạo một Workbook excel và bước tiếp theo là tạo Sheet và thêm nội dung vào trang tính.

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

kiểm tra đầy đủ các ví dụ http://www.websparrow.org/tutorials/java/how-to-read-and-write-excel-file-in-java

Các vấn đề liên quan