Ver Mensaje Individual
  #6 (permalink)  
Antiguo 16/09/2013, 09:03
CRauda
 
Fecha de Ingreso: septiembre-2010
Mensajes: 91
Antigüedad: 13 años, 8 meses
Puntos: 9
Respuesta: Como pasar un excel a java ?

Para empezar file es un objeto que estas mandando por parametro y dentro de sus metodos tiene la ruta fisica del archivo que subiras, esa ruta fisica es la que necesitas, por ejemplo "C:/Documents and Setting/usuario/Documents/ArchivosCarga/miarchivo.xls" ya que esa ruta es la que sirve para inicializar el freader de manera correcta, por otra parte estas armando mal el query, tu le estas colocando para enviar parametros pero en realidad le sigues poniendo mas abajo una concatenacion, el armado deberia quedar algo asi:

Código:
public void leerExcel(FileUploadEvent file) throws FileNotFoundException, IOException {
        File bow = null;
        FileReader freader = null;
        CsvReader datos = null;
        String ruta = file; //Aca debes obtener la ruta, no el objeto y debe ser String, creo que te quedaria algo asi como file.getFile().getFileName(); aunque no estoy seguro, prueba tu las opciones que encuentres
        bow = new File(ruta); //Luego inicializas el objeto bow con la ruta para que sea leido
        freader = new FileReader(bow);
        datos = new CsvReader(freader);
        int contador = 0;
        int cantidadCamposArchivo = 10;
        while (datos.readRecord()) {
            for (int i = 0; i < cantidadCamposArchivo; i++) {
                String sql = "insert into excel(nombre,dia,hora)values("; //Aca no le agregas parametros, los valores se contatenan en el datos.get(i)
                sql += datos.get(i);
                if (contador < cantidadCamposArchivo - 1) { //Aca debes ponerle el -1 sino nunca entrara en el "else" porque el i igual queda < cantidadCampos
                    sql = ",";
                    contador += 1;
                } else {
                    sql += ")";
                    sql = "";
		    ejecutarQuery(sql); //Aca mandas el query a ejecutarse a la base
                    contador = 0;
                }
            }
        }
        datos.close();
    }
Y ya que veo que no me captaste como lo hacia yo, te muestro, solo que yo trabajo con Struts y Oracle asi que creo que no te servira mi misma funcion, pero es solo para que veas que yo tengo una funcion aparte para executar el query:

Código:
    public void ejecutarQuery(String sql){
	QueryRunner query = new QueryRunner();
        Connection conn = null;
        
        try{
            conn = ds.getConnection();
            query.update(conn,sql,params);
        }catch(SQLException e){
            e.printStackTrace();
        }finally{
            conn.commit();
            conn.close();
        }
		
	}
P.D.: Luego me explicas como haces para que te aparezca como codigo java en el mensaje XD

Última edición por CRauda; 16/09/2013 a las 09:10