2011-01-31 44 views
9

Tôi muốn sử dụng hàm AVERAGE, nhưng khi tôi có ô tham chiếu xảy ra là nhãn tôi nhận đượC#VALUE làm đầu ra.JXL giải quyết vấn đề #VALUE

Tôi có kèm theo mảnh mẫu mã cho những gì tôi đang cố gắng để làm:

String filename = "C:\\input.xls";  
WorkbookSettings ws = new WorkbookSettings();  
ws.setLocale(new Locale("en", "EN"));  
WritableWorkbook workbook = Workbook.createWorkbook(new File(filename), ws);  
WritableSheet s1 = workbook.createSheet("Output", 0);  
s1.addCell(new Number(1,2,6));  
s1.addCell(new Number(3, 1, 6));  
s1.addCell(new Number(3, 2, 1));  
s1.addCell(new Number(3, 3, 6));  
s1.addCell(new Label(3, 4, ""));  
Formula formula = new 
Formula(3,5,"AVERAGE(Output!D1,Output!D2,Output!D3,Output!D4,Output!D5)");  
s1.addCell(formula); 
workbook.write(); 
workbook.close(); 

tôi không thể chuyển đổi các ô trống 0 vì giá trị AVG sẽ thay đổi.

JAR SỬ DỤNG

jxl-2.6.jar

Trong thời gian thực thay vì Label giá trị sẽ được sử dụng dựa trên công thức

IF (Some- cell-reference = "", "", some-Value)

Tuy nhiên; khi tôi cố chỉnh sửa ô bằng phím F2, nó thay đổi kế hoạch thực hiện của nó và tôi nhận được kết quả chính xác.

Có giải pháp nào có sẵn cho việc này ....

giải pháp dự kiến:

Để thực hiện các tế bào như trống rỗng nhưng thay đổi định dạng ô để #VALUE mà không được trả lại.

bài này là hơi liên quan đến

JXL #VALUE problem with reference to other sheet

Trả lời

1

Ok, vấn đề đầu tiên tôi thấy là những con số mà bạn đang thêm vào trong cột "C" không phải là "D". Có lẽ bạn đã có số trong "D", vì vậy nó không phải là một vấn đề, nhưng một cái gì đó để xem xét.

Tôi nghĩ rằng vấn đề lớn là cách jxl hoạt động bảng tính, other questioner này cho rằng phạm vi được đặt tên của chúng không được tạo trước khi công thức của chúng được chèn vào, vì vậy chúng chỉ hoạt động khi chúng "di chuyển" vào ô, như bạn đã làm. Vì vậy, nó có thể là tờ "Output" của bạn không khởi tạo nên không có tham chiếu hợp lệ cho Output! tài liệu tham khảo.

Vì bạn cũng đang chèn các công thức trong bảng đó, sau đó đổ tài liệu tham khảo tờ và viết dòng của bạn như thế này:

Formula formula = new Formula(3,5,"AVERAGE(D1:D5)"); 
Các vấn đề liên quan