Java - Problemas con encoding y jxl

 
Vista:

Problemas con encoding y jxl

Publicado por roberto (4 intervenciones) el 30/06/2010 20:31:41
Hola tengo un problema al exporta a excel desde java y flex, el codigo que tengo ya logra la exportacion pero los caracteres con acentos o ñ no aparecen, ya estuve viendo el api del jxl pero no logro que aparescan los acentos, les agradeceria cualquier ayuda

****************************************************************

package gob.issste.app.isapp.web.servlet.excel;

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import jxl.SheetSettings;
import jxl.Workbook;
import jxl.WorkbookSettings;
import jxl.read.biff.File;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.biff.CountryCode;

public class ServletExcel extends HttpServlet {
private static final long serialVersionUID = 1L;

/**
* @see HttpServlet#HttpServlet()
*/
public ServletExcel() {
super();
// TODO Auto-generated constructor stub
}

/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
}

/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String datosCsv = request.getParameter("datos");
String cadenaTabulada[] = datosCsv.split("\\n");
String archivo = request.getParameter("archivo");
WritableSheet s;
boolean band=false;
int numHoja=0;
int identificador=0;
int contador = 0;
String original=null;
String excelRegionalSettings;
String excelDisplayLanguage;
String[] encoders = {"US-ASCII","ISO-8859-1","UTF-8","UTF-16BE","UTF-16LE","UTF-16"};
byte[] data1 = {0x4E,0x61,0x76, 0x20, 0x54,(byte) 0xEA, 0x73,0x74};
int encId = 0;

try{

Date date = new Date();
SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy HH.mm.ss");
String cadenaFecha = formatter.format(date);

response.setContentType("application/ms-excel");

response.setHeader("Content-Disposition",
"attachment; filename="+archivo+"_"+cadenaFecha+".xls");

WorkbookSettings configurar = new WorkbookSettings();
configurar.setEncoding("ISO-8859-1");
excelRegionalSettings= CountryCode.SPAIN.getCode();
excelDisplayLanguage= CountryCode.SPAIN.getCode();


WritableWorkbook w = Workbook.createWorkbook(response.getOutputStream(),configurar);
s = w.createSheet(archivo, numHoja);


for(int i=0; i<cadenaTabulada.length; i++){
String cadenaDatos[] = cadenaTabulada[i].toString().split("\\t");
//cadenaDatos[] s1 = new String(data1,0,data1.length, encoders[encId]);
cadenaDatos[i] = new String(data1,0,data1.length, encoders[encId]);


for(int j=0; j<cadenaDatos.length; j++){
System.out.println("CADENA DATOS: "+cadenaDatos[j]);
if((i==0) && (band==false)){
if(cadenaDatos[j].toString().equals("HojaNvaEx")){
band=true;
System.out.println("PARAMETRO HOJA NUEVA");
}
}
if(band){
if(i!=0){
System.out.println("i: "+i);
if(j==0){
System.out.println("j: "+j+" valor: "+cadenaDatos[j]);
if((cadenaDatos[j]!=null) && (cadenaDatos[j]!="")){
if((identificador!=Integer.parseInt(cadenaDatos[j])) && (i!=1)){
numHoja += 1;
s = w.createSheet(archivo, numHoja);
System.out.println("HOJA NUEVA");
contador = 1;

System.out.println("CAD DATOS 0: "+cadenaDatos[0]);
String cadenaDatos2[] = cadenaTabulada[0].toString().split("\\t");
int contadorA=0;

for(int a=0; a<cadenaDatos2.length; a++){
if(a>0){
contadorA = a-1;
s.addCell(new Label(contadorA,0,cadenaDatos2[a]));

}
System.out.println("cadenaDatos2[a]: "+cadenaDatos2[a]);
}
}
identificador=Integer.parseInt(cadenaDatos[j]);
}
}
}
if(j>0){
s.addCell(new Label(j-1,contador,cadenaDatos[j]));
}
}else{
s.addCell(new Label(j, i, cadenaDatos[j]));
}
System.out.println("Posicion i: "+i+" ,j: "+j+cadenaDatos[j]);
}
contador += 1;
}

w.write();
w.close();



} catch (Exception e){
System.out.println("EXCEPCION "+e);
}
}

}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder