2011-01-31 11 views
9

Voglio usare la funzione MEDIA, ma quando ho una cella di riferimento che è un'etichetta ottengo #VALUE come output.JXL risolve il problema #VALORE

Ho attaccato il pezzo di codice di esempio per quello che sto cercando di fare:

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

Non posso convertire il cella vuota a 0 poiché il valore AVG cambierà.

JAR USATO

jxl-2.6.jar

In tempo reale anziché Label il valore verrà utilizzato basato su una formula

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

Tuttavia; quando provo a modificare la cella con la chiave F2 cambia il suo piano di esecuzione e ottengo l'output corretto.

C'è qualche soluzione per questo ....

soluzione prevista:

per rendere il cellulare come vuoto, ma cambiare il formato della cella in modo che # valore non viene restituito.

questo post è un po 'legato alla

JXL #VALUE problem with reference to other sheet

risposta

1

Ok, il primo problema che vedo è che i numeri si sta aggiungendo in sono nella colonna "C" non "D". Forse hai già numeri in "D", quindi non è un problema, ma qualcosa da considerare.

Penso che il grosso problema sia il modo in cui jxl funziona il foglio di calcolo, questo other questioner pensava che il loro intervallo denominato non fosse stato creato prima che la loro formula fosse inserita, quindi hanno funzionato solo quando sono entrati "nella" cella, come hai fatto tu Quindi potrebbe essere che il tuo foglio "Output" non si sta inizializzando, quindi non c'è un riferimento valido per l'Output! Riferimenti.

Dal momento che si sta inserendo anche la Formula nello stesso foglio, poi eseguire il dump dei riferimenti foglio e scrivere la vostra linea in questo modo:

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