Скопируйте значение ячейки формулы POI - PullRequest
0 голосов
/ 28 ноября 2018

Я пытаюсь скопировать значение ячейки файла Excel в другой файл Excel.Однако исходный файл содержит формулу, и когда я получаю ячейку, я получаю формулу, и в моем конечном файле я получаю формулу, а не ее значение.

for (int j = 0; j < cellSource[0].length; j++)
{ //For each columns of source
    for (int i = 0; i < cellFinal[0].length ; i++)
    { //For each columns of final
        if (cellSource[0][j].toString().equals(cellFinal[0][i].toString()))
         { //Checking is Equals
            for (int p = 0; p < cell.length; p++)
            { //If their are equals, replace the data
                cellFinal[p][i].setCellValue(cellSource[p][j].toString());
                //Replace the value with the Formula of the main
            }
        }
    }                               
}

Я пробовал несколько вещей, как getCachedFormulaResultType(), ноэто не работает ..

Cell cell = rowFileDa.getCell();
switch (cell .getCellType()) {
     case FORMULA:
         fileDa[i][j] = cell.getCachedFormulaResultType().toString();
         break;
         //Return NUMERIC
}

Спасибо!

Решено:

cellValue = evaluator.evaluate(cellSource[p][j]);
String tmp = cellValue.formatAsString();
tmp = tmp.replace("\"", "");

if (isNumeric(tmp) == false) {
     cell[p][i].setCellValue(tmp);
} else {
    double tmpBis = Double.valueOf(tmp);
     cell[p][i].setCellValue(tmpBis);
 }

Спасибо за помощь, ребята!

1 Ответ

0 голосов
/ 28 ноября 2018

Не используйте cell.toString(), используйте значение ячейки.

В соответствии с API ячейки: Apache POI Javadoc

варианты getBooleanCellValue(), getDateCellValue(), getErrorCellValue(), getNumericCellValue(), getRichStringCellValue(), getStringCellValue().

...