Excel の行をあるシートから別のシートにコピーする必要があります。しかし、実際の値の代わりにコピーした後、異なる値が得られます。文字列値を持つセルには問題はありませんが、数値には問題ありません。Excel セルには、任意のタイプの値を含めることができます。私のコードはそれらすべてを受け入れ、同じものを別のシートにコピーする必要があります。この場合、私を助けてください。
if(row.getCell(getLastCell)!=null && ((row.getCell(getLastCell).toString().equalsIgnoreCase(FAIL))|| (row.getCell(getLastCell).toString().equalsIgnoreCase("Invalid CR Statement"))))
{
failuresRow=failuresSheet.createRow(createNewRow++);
for(int ii=0;ii<=getLastCell;ii++)
{
failuresCell=failuresRow.createCell(ii);
failuresCell.setCellValue(row.getCell(ii)+"");
failuresCell.setCellType(row.getCell(ii).getCellType());
failuresCell.setCellStyle(row.getCell(ii).getCellStyle());
}
}
row.getCell(ii)+"" はセル型を文字列に変換することを知っていますが、任意の型のデータを持つことができるセルを受け入れるように setCellValue を設定したいと思います (例: 日付、ブール値、文字列、数値など)。 ……)
私は DataFormatter を使用してみましたが、以下のように他の方法でも使用しましたが、使用できません。
failuresCell.setCellValue(df.formatCellValue(row.getCell(ii)));
switch (cell.getCellType()) {
case Cell.CELL_TYPE_STRING:
failuresCell.setCellValue(cell.getRichStringCellValue().getString());
break;
case Cell.CELL_TYPE_NUMERIC:
if (DateUtil.isCellDateFormatted(cell)) {
failuresCell.setCellValue(cell.getDateCellValue());
} else {
failuresCell.setCellValue(cell.getNumericCellValue());
}
break;
case Cell.CELL_TYPE_BOOLEAN:
failuresCell.setCellValue(cell.getBooleanCellValue());
break;
case Cell.CELL_TYPE_FORMULA:
failuresCell.setCellValuec(cell.getCellFormula());
break;
default:
// some code
}
セルの数値が 9200278 の場合、1717 として出力されます。どこが間違っているのかわかりません。この場合、私を助けてください。