Privacidad: Recuerde que la información escrita en los foros de programación es 100% pública y que su ip será registrada asociada a su mensaje. Si encuentra un mensaje fuera de lugar, por favor, notifiquelo para su revisión y eliminación.
Java para actualizar Excel
Enviado por the_pas el día 16 de junio de 2008
Tengo el siguiente programa en Java, que lo que me hace es actualizar un fichero excel, pero el problema que tengo es que cuadno abro el excel als formulas que me ejecuta se queda en #¡VALOR! pero si le doy F2 y luego intro se me pone el valor correcto,cual puede ser mi problema en el codigo??
os adjunto el codigo:
public static void main(String[] args) {
// TODO Auto-generated method stub
RentaVariable rv=new RentaVariable(args[0]);
rv.generaFichero();
}
public RentaVariable()
{
this.rutaProperty="";
}
public RentaVariable(String rutaProperty)
{
//Almaceno el fichero de entrada
this.rutaProperty=rutaProperty;
this.cargaConfiguracion(this.rutaProperty);
}
public void generaFichero()
{
String cadenaEntrada; //Linea auxiliar para recoger la cadena de entrada
int row; //Contador que me dice porque linea voy
String token=","; //Token con el que separaremos los archivos de entrada
String[] partirCadena; //Array que almacena la cadena guardada.
HSSFSheet hoja; //Hoja Excel
//Primero abrimos el fichero de entrada
try
{
//Primero abrimos la hoja excel
FileInputStream fileIn = new FileInputStream(this.ficheroSalida);
//Abro el ficheros excel
HSSFWorkbook wb = new HSSFWorkbook(fileIn);
//Ahora cojo la hoja que quería
hoja = wb.getSheet(this.nombreHoja);
//Abro el fichero de entrada
entrada =new BufferedReader(new FileReader(this.ficheroEntrada));
//Inicializo la fila inicial
row=this.filaInicio;
//Recorro las lineas del fichero
while((cadenaEntrada=entrada.readLine())!=null)
{
partirCadena=cadenaEntrada.split(token);
for (int j=0;j<partirCadena.length;j++)
{
if (partirCadena[j]!=null)
{
if (row>=this.filaInicio+this.numFilaCabecera) //Si estamos fuera de la cabecera miro la configuración
{
//Grabamos la celda
if (this.tipoDatos[j]!=null && this.tipoDatos[j].compareTo("string")==0)
hoja.createRow(row).createCell((short)j).setCellValue(new HSSFRichTextString(partirCadena[j]));
else if (this.tipoDatos[j]!=null && this.tipoDatos[j].compareTo("number")==0)
hoja.createRow(row).createCell((short)j).setCellValue(Double.parseDouble(partirCadena[j]));
}
else //Sino lo meto como Texto enriquecido.
hoja.createRow(row).createCell((short)j).setCellValue(new HSSFRichTextString(partirCadena[j]));
}
}
row++;
}
hoja.setForceFormulaRecalculation(true);
wb.removeName("Inputs");
HSSFName nombre = wb.createName();
nombre.setNameName("Inputs");
nombre.setReference("Input!$A$4:$E$1001");