Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    883

    (java) Leggere un file excel

    Ho un file excel dove nella prima colonna ci sono 100 nomi di citta mentre nella seconda colonna ci sono dei numeri associati alle citta
    Se da un programma java voglio accedere al file excel e ricavarmi un codice in base ad un nome di città specificato dall'utente, devo connettermi al foglio di excel come se fosse un database? oppure posso fare in altro modo?

  2. #2
    soluzione a) puoi benissimo accedere al foglio excel come se fosse un db, e quindi anche poter effettuare delle "query"
    soluzione b) se questo non ti basta, dai un occhio al progetto POI
    23-08-2005: Udinese in cémpions lìg
    Questa estate l'ho passata a Tallin

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    883
    grazie della segnalazione del progetto POI, prima vorrei provare la prima strada che mi hai detto.
    Secondo te devo usare un codice del seguente tipo?
    codice:
    import java.sql.*;
    
    public class Lookup {
     public static void main(String[] args) throws SQLException, ClassNotFoundException {
    
      String dbUrl = "jdbc:odbc:people";
      String user = "";
      String password = "";
    
      // Load the driver (registers itself)
      Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
      Connection c = DriverManager.getConnection(
      dbUrl, user, password);
      Statement s = c.createStatement();
    
      // SQL code:
      ResultSet r = s.executeQuery
        ("SELECT FIRST, LAST, EMAIL " +
         "FROM people.csv people " +
         "WHERE " +
         "(LAST='" + args[0] + "'));
    
      while(r.next()) {
        // Capitalization doesn't matter:
       System.out.println(r.getString("Last") + ", "+ r.getString("fIRST")+ ": " + r.getString("EMAIL") );
      }
      s.close(); // Also closes ResultSet
     }
    }
    dove al posto di people metto il nome del file excel (con l'estensione?)?

  4. #4
    No, il nome della tabella è il nome del file sheet che ti ritrovi in excel (il nome del tab: foglio1, foglio2 ecc..)
    Per collegarti col file xls devi sempre utilizzare un bridge jdbc-odbc, ma collegarti con una soluzione dns-less (cioè specificando il percorso di dove si trova il file; se non sai cosa ho detto fai una ricerca che già si è parlato di sta cosa)
    23-08-2005: Udinese in cémpions lìg
    Questa estate l'ho passata a Tallin

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    883
    ho fatto una ricerca con la chiave dns-less ma non ho trovato il topic a cui ti riferisci
    Sai mica darmi il link?

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    883
    Ho trovato in rete questo codice

    String yourDB = "jdbcdbcriver={Microsoft Access Driver (*.mdb)};DBQ=\\\\192.168.0.31\\yourSharedFolderOnO therMachine\\yourDBName.mdb";

    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

    Connection con = DriverManager.getConnection(yourDB,"","");

    Al posto di Microsoft Access Driver, devo mettere Microsoft Excel Driver? altre correzioni?

  7. #7
    sì, il codice è quello
    mi pare che non dovresti cambiare altro
    23-08-2005: Udinese in cémpions lìg
    Questa estate l'ho passata a Tallin

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    883
    come faccio a fare una query su excel?

    Nel file comuni.cvs c'è un foglio solo.
    Il foglio è composto da due colonne (A e B)
    Nella prima ci sono 10 nomi, nella seconda 10 numeri.
    Dato un nome devo ricavare il codice.

    String nome = "dario";
    Statement s = c.createStatement();

    // SQL code:
    ResultSet r = s.executeQuery("SELECT B " + "FROM comuni.csv comuni " + "WHERE A='" + nome + "'");

    E' corretta la sintassi? va bene SELECT B ?

  9. #9
    invece di comuni.csv comuni ci devi mettere il nome del foglio!
    e select B va bene se il nome della colonna è proprio b (cioè riga 1 colonna 2 ci sta scritto B)
    altrimenti forse va bene lo stesso, ma non ho mai provato
    23-08-2005: Udinese in cémpions lìg
    Questa estate l'ho passata a Tallin

  10. #10
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    883
    Sono riuscito a connettermi al file adesso però non so la sintassi esatta che usa excel per fare le query.
    Questo è il codice ora sto cercando come si scrivono le query (quella che posto ha il codice non corretto)

    codice:
    private Vector getCity() {
    		Vector city = null;
    		String yourDB = "jdbc:odbc:Driver={Microsoft Excel Driver (*.xls)};DBQ=C:\\eclipse\\workspace\\Prova3\\tbcomuni.xls";
    		try {
    			Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    		} catch (ClassNotFoundException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    
    		try {
    			Connection c = DriverManager.getConnection(yourDB, "", "");
    			Statement s = c.createStatement();
    		
    			// SQL code:			
    			ResultSet r = s.executeQuery("Select * from [tbcomuni$].B") where [tbcomuni$].A = 'FIRENZE'");
    
    			
    
    		} catch (SQLException e1) {
    			// TODO Auto-generated catch block
    			e1.printStackTrace();
    		}
    		return city;
    	}

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.