复制公式POI的单元格值

时间:2018-11-27 21:45:25

标签: java arrays excel apache-poi

我正在尝试将一个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 :(得分:0)

不要使用cell.toString(),请使用单元格值。

根据Cell API:Apache POI Javadoc

选项为getBooleanCellValue(), getDateCellValue(), getErrorCellValue(), getNumericCellValue(), getRichStringCellValue(), getStringCellValue()