JXL решает проблему #VALUE - PullRequest
9 голосов
/ 31 января 2011

Я хочу использовать функцию AVERAGE, но когда у меня есть эталонная ячейка, которая оказывается меткой, я получаю #VALUE в качестве вывода.

Я приложил пример кода для того, что я пытаюсь сделать:

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

Я не могу преобразовать пустую ячейку в 0, так как значение AVG изменится.

JAR USED

JXL-2.6.jar

В реальном времени вместо метки будет использоваться значение по формуле

IF (Некоторые клеточно ссылки = "", "", некоторые из-Value)

Тем не менее; когда я пытаюсь отредактировать ячейку с помощью клавиши F2 , она меняет свой план выполнения, и я получаю правильный вывод.

Есть ли какое-либо решение для этого ....

Ожидаемое решение:

Чтобы сделать ячейку пустой, но измените формат ячейки, чтобы #VALUE не возвращалось.

Эта публикация имеет некоторое отношение к

JXL # ЗНАЧЕНИЕ проблема со ссылкой на другой лист

1 Ответ

1 голос
/ 28 июня 2011

Хорошо, первая проблема, которую я вижу, состоит в том, что числа, которые вы добавляете, находятся в столбце "C", а не "D".Может быть, у вас уже есть цифры в «D», так что это не проблема, но что-то нужно учитывать.

Я думаю, что большая проблема в том, как jxl работает с электронной таблицей, этот другой вопросник Я думал, что их именованный диапазон не был создан до того, как была вставлена ​​их формула, поэтому они работали только тогда, когда входили в «клетку», как вы.Возможно, ваш лист «Вывод» не инициализируется, поэтому для вывода нет действительной ссылки!ссылки.

Поскольку вы также вставляете формулу в тот же лист, дамп ссылок на листы и напишите свою строку следующим образом:

Formula formula = new Formula(3,5,"AVERAGE(D1:D5)");
...