2010-08-31 40 views

Trả lời

22

jxl được thiết kế để tăng hiệu quả đọc (vì đây là cách sử dụng chính của API). Để cải thiện hiệu suất, dữ liệu liên quan đến thông tin đầu ra (ví dụ: tất cả thông tin định dạng như phông chữ) không được diễn giải khi bảng tính được đọc, vì điều này là thừa khi thẩm vấn các giá trị dữ liệu thô.

Tuy nhiên, nếu chúng ta cần phải sửa đổi bảng tính này, cần xử lý các giao diện ghi khác nhau, có thể lấy bằng cách sử dụng phương pháp sao chép.

Workbook workbook = Workbook.getWorkbook(new File("myfile.xls")); 
WritableWorkbook copy = Workbook.createWorkbook(new File("temp.xls"), workbook); 

Thao tác này sẽ sao chép thông tin đã được đọc cũng như thực hiện xử lý bổ sung để giải thích các trường cần thiết để viết bảng tính. Điểm bất lợi của chiến lược đọc tối ưu hóa này là chúng ta có hai bảng tính được lưu trữ trong bộ nhớ chứ không phải chỉ một, do đó tăng gấp đôi yêu cầu bộ nhớ.

Nhưng sau này, bạn có thể làm bất cứ điều gì bạn muốn. Giống như:

WritableSheet sheet2 = copy.getSheet(1); 
WritableCell cell = sheet2.getWritableCell(1, 2); 

if (cell.getType() == CellType.LABEL) 
{ 
    Label l = (Label) cell; 
    l.setString("modified cell"); 
} 
copy.write(); 
copy.close(); 
workbook.close(); 

Lưu ý: điều này được lấy trực tiếp từ Andy Khan's tutorial page.

+0

Hi @Lalli tôi đang sử dụng câu trả lời của bạn, nhưng nó không làm việc Tôi nhận được lỗi trên dòng này 'WritableWorkbook sao chép = Workbook.createWorkbook (new File ("temp.xls"), workbook); ' LRI là' java.io.FileNotFoundException: temp.xls: mở không thành công: EROFS (Hệ thống tệp chỉ đọc) ' –

0

Tôi biết rằng đây là một câu hỏi cũ, nhưng nếu ai đó gặp phải vấn đề tương tự, thì hãy giữ nguyên định dạng chính xác (kiểu phông chữ, màu, v.v.) bạn nên lưu định dạng ô trước khi truyền , và sau đó buộc các tế bào để định dạng trước đó. Code:

CellFormat cfm = cell.getCellFormat(); 
Label l = (Label) cell; 
l.setString("modified cell"); 
cell.setCellFormat(cfm); 
0
//there is god example of it, you can copy in ur project and check it out, to 
//understand how it works 

Workbook wk = Workbook.getWorkbook(new File("ex.xls")); 
// 
WritableWorkbook wkr = Workbook.createWorkbook(new File("modifed.xls"), wk); 
/* second line makes copy of wk excel file object /creates a readable spreadsheet. 
both are now similar and i can Modify exiting wkr spreadsheets */ 



//next 2 line retrieve sheet number 0 and cell (1,1) 


WritableSheet getsht = wkr.getSheet(0); 
WritableCell getcl = getsht.getWritableCell(1, 1); 


//making own font 

WritableFont ft = new WritableFont(WritableFont.ARIAL, 20 , WritableFont.BOLD, true , UnderlineStyle.SINGLE); 
//making Format, which uses font 
WritableCellFormat form = new WritableCellFormat(ft); 

Number nb = (Number) getcl ;   
nb.setCellFormat(form);  


wkr.write(); 
wkr.close(); 
+0

Mặc dù đôi khi chỉ trả lời một câu hỏi với mã, nhưng phần lớn thời gian bài đăng được cải thiện bằng cách thêm giải thích. Bạn có thể chỉnh sửa câu trả lời của bạn để bao gồm một câu trả lời. –

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