Cambiar el tipo de celda de las celdas de Excel utilizando Apache Poi 5.1
Estoy intentando cambiar el tipo de celda de general a numérico en una hoja de cálculo de Excel utilizando Apache Poi. He creado el archivo .xlsx a partir de un archivo .csv utilizando Poi. Ahora necesito cambiar el tipo de celda de las columnas “E” y “F” del archivo xlsx a numérico. Esto es lo que he intentado:
FileInputStream fis = new FileInputStream(final_report_name);
XSSFWorkbook workBook = new XSSFWorkbook(fis);
XSSFSheet new_sheet = workBook.getSheetAt(0);
XSSFDataFormat format = workBook.createDataFormat();
XSSFCellStyle style = workBook.createCellStyle();
style.setDataFormat(format.getFormat(" # "));
new_sheet.setDefaultColumnStyle(4, style); //Estos no funcionan
new_sheet.setDefaultColumnStyle(5, style); //Mantienen el tipo de celda general
XSSFRow row = new_sheet.getRow(3);
Cell cell = row.getCell(5); //Esto cambió el tipo de celda a " # "
cell.setCellStyle(style); //Pero el número aún se muestra como texto
FileOutputStream fileOutputStream = new FileOutputStream(final_report_name);
workBook.write(fileOutputStream);
workBook.close();
El estilo de columna no funciona en absoluto, y el estilo de celda funcionó, pero el número aún se muestra como texto. Todavía tengo que ir manualmente al ícono que aparece al lado que dice “El número en esta celda está formateado como texto o precedido por un apóstrofo”, y luego hacer clic en el menú “Convertir en número” (ver imagen). ¿Cuál podría ser el problema aquí y cómo puedo lograr esto?
davy.ai
Para cambiar el tipo de celda de general a numérico en una hoja de Excel utilizando Apache Poi, puede probar las siguientes modificaciones en el código:
El código anterior itera a través de las filas de la hoja y establece el estilo de las celdas de las columnas E y F como numérico. Luego, recupera el valor de la celda como double utilizando
getNumericCellValue()
y lo establece nuevamente en la celda utilizandosetCellValue()
. Esto debería convertir los valores de las columnas E y F a numérico y eliminar el mensaje de advertencia al abrir el archivo de Excel.