2010-12-22 15 views
6

Estoy usando Java Spring y jxl para crear un libro de Excel en el lado del servidor. Los datos que deben mostrarse en Excel consisten en números ya formateados. Estoy usandoCómo escribir números formateados como números en JExcel (jxl)

WritableCellFormat wcf = new WritableCellFormat(); 
wcf.setAlignment(Alignment.RIGHT); 
.... 
.... 
sheet.addCell(new Label(j, i + 1, xxx, wcf)); 
//where xxx is a string which is a number already formatted 

En el archivo de Excel descargado, todos estos números se almacenan en forma de texto y así Excel no pueden utilizar fórmulas en ellos, se da una advertencia como 'número almacenado como texto' y tengo que hacer 'Convertir a Número'.

En jxl, ¿podemos pasar cadenas y decir que las interpretemos como números? Todos los números que tengo son números válidos formateados de manera diferente usando $,%, miles de separadores. No quiero convertirlos a números válidos y darles formato de nuevo al exportar a Excel.

Por favor ayuda. Gracias.

Respuesta

0
/*use new Number to write number cell*/ 
WritableWorkbook w; 
    try { 
     w = Workbook.createWorkbook(new File("c:/test.xls")); 
     WritableSheet s = w.createSheet("Demo Book", 0); 
     WritableCellFormat wcf = new WritableCellFormat(); 
     for (int i=0;i<10;i++){ 
      int row = i+1; 
      /*add cell number*/ 
      s.addCell(new Number(1, i, (i*15))); 
      /*add cell number*/ 
      s.addCell(new Number(2, i, (i*3+Math.random()*10))); 
      /*add formula*/ 
      s.addCell(new Formula(3,i,"B"+row+" * C"+row)); 
     } 
     w.write(); 
     w.close(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (RowsExceededException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (WriteException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
2

tuve un problema similar

cambié la variable a int y se utiliza nueva función Número que ayudó.

int eday = Integer.parseInt(Trainingresult.getString("Day")); 
//Label Eday = new Label(1, i, eday); 
firstsheet.addCell(new Number(1,i,eday)); 
Cuestiones relacionadas