2012-01-23 22 views
11

quiero para almacenar datos numéricos en la hoja de Excel.
Los datos numéricos se representan por tipo de cadena en mi código de Java.
¿Es posible configurarlo como numérico sin convertirlo?Valor de ajuste de celdas de Excel en formato numérico usando POI

He intentado el siguiente código, pero no fue de tipo numérico (recibo una advertencia en Excel diciendo que el número se almacena como texto ...)

HSSFCell dCell =... 
dCell.setCellType(Cell.CELL_TYPE_NUMERIC); 
dCell.setCellValue("112.45") 
+0

no es el método setCellValue sobrecargado para soportar otros tipos, es decir, no puede pasas un flotador o algo en ese método? Actualmente estás pasando una cadena. – mydoghasworms

+0

Sí, puedo pasar cualquier tipo. Le pregunté si es posible pasar el valor AS String y convertirlo automáticamente al tipo necesario. – omrid

+0

ver esto: [enter Descripción enlace aquí] [1] [1]: http: // stackoverflow.com/questions/5335285/write-number-in-excel-cell-with-poi –

Respuesta

20

Debe proporcionar el valor como un doble. Como the doc says:

setCellValue

public void setCellValue(double value)

establecer un valor numérico para la célula

Parámetros:

valor - el valor numérico para ajustar esta celda para. Para las fórmulas estableceremos el valor precalculado, para los valores numéricos estableceremos su valor. Para otros tipos cambiaremos la celda a una celda numérica y estableceremos su valor.

Por lo tanto, debe ser

dCell.setCellValue(new Double("123")); 

O

dCell.setCellValue(123); //Remember, the way you did was, you actually passed a string (no quotes) 
+1

así que debo establecer el valor en el tipo necesario? no puede ser "auto-convertido" de String? – omrid

+2

No, simplemente use lo que dije o dCell.setCellValue (123). Recuerde, sin comillas o lo convertirá en una cadena. (que realmente hiciste) –

2

intenta utilizar envoltorio clases:

dCell.setCellValue(new Double(112.45)); 

Por cierto, que funcionará si simplemente da el valor en lugar de los dobles cotes de la siguiente manera:

dCell.setCellValue(112.45); 
7

He usado Big Decimal para esto,

dCell.setCellValue(new BigDecimal("112.45").doubleValue()); 
+0

Gracias. Estaba buscando una gran conversión decimal también. – ramakrishnan

1

viejo uno, pero aún así Esto ayudará Alguien de .NET que utilizan NPOI

dCell.setCellValue(Convert.ToDouble(112.45)); 

Nosotros tiene

cell.SetCellType(NPOI.SS.UserModel.CellType.NUMERIC); 

que no retire la advertencia, pero el primero código hicieron trabajaron después de convertirse al doble por todos los números enteros y valores dobles en .net

Cuestiones relacionadas