PDA

View Full Version : [JAVA] Stampare su un file Excel


franksisca
11-05-2006, 16:05
ragazzi, io tramite questa classe, trovata non ricordo dove, riesco a leggere i dati da un file Excel:
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Vector;

public class ExcelReader {


static String foglio ;
static String filename ;
static Vector vettore=new Vector();

public static String getFoglio() {
return foglio;
}

public static void setFoglio(String foglio) {
ExcelReader.foglio = foglio;
}

public ExcelReader(String filename) throws ClassNotFoundException {
this.filename=filename;
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}

public Vector leggidati(String foglio) throws SQLException{
String query = "select * from [" + foglio.trim() + "$]";
String database="jdbc:odbc:Driver={Microsoft Excel Driver (*.xls)};DBQ=" + filename.trim() + ";DriverID=22;READONLY=true}";
Connection con = java.sql.DriverManager.getConnection( database ,"","");
Statement state = con.createStatement();
ResultSet rs = state.executeQuery( query );
int maxWidth=0;
Vector rows = new Vector(); //righe
Vector columnHeader = new Vector(); //colonne
ResultSetMetaData rsmd = rs.getMetaData();
int cols = rsmd.getColumnCount(); //numero colonne
for (int i=1; i<=cols; i++)
columnHeader.add( rsmd.getColumnName(i) ); //prende il nome delle colonne
rows.add(columnHeader); //e li aggiunge al vettore
while ( rs.next()){
Vector thisRow = new Vector(); //vettore temporaneo per i dati
for (int i=1; i<=cols; i++)
thisRow.add( rs.getString(i) ); //aggiunge i dati al vettore
rows.add(thisRow); //aggiunge il vettore temporaneo al vettore sopra
}
rs.close();
state.close();
con.close();
return rows;
}
}


intanto se serve a qualcuno benvenuto, ma ora mi chiedo, dato la struttura "=" a quella di un database, secondo voi, scrivere e come fare un update in un database???
se qualcuno ha codice pronto, potrebbe farmi vedere.
P.S.: in tutta sincerità non ho provato, ma se proprio nessuno riesce a trovare qualcosa di già scritto......

thebol
11-05-2006, 16:28
ragazzi, io tramite questa classe, trovata non ricordo dove, riesco a leggere i dati da un file Excel:
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Vector;

public class ExcelReader {


static String foglio ;
static String filename ;
static Vector vettore=new Vector();

public static String getFoglio() {
return foglio;
}

public static void setFoglio(String foglio) {
ExcelReader.foglio = foglio;
}

public ExcelReader(String filename) throws ClassNotFoundException {
this.filename=filename;
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}

public Vector leggidati(String foglio) throws SQLException{
String query = "select * from [" + foglio.trim() + "$]";
String database="jdbc:odbc:Driver={Microsoft Excel Driver (*.xls)};DBQ=" + filename.trim() + ";DriverID=22;READONLY=true}";
Connection con = java.sql.DriverManager.getConnection( database ,"","");
Statement state = con.createStatement();
ResultSet rs = state.executeQuery( query );
int maxWidth=0;
Vector rows = new Vector(); //righe
Vector columnHeader = new Vector(); //colonne
ResultSetMetaData rsmd = rs.getMetaData();
int cols = rsmd.getColumnCount(); //numero colonne
for (int i=1; i<=cols; i++)
columnHeader.add( rsmd.getColumnName(i) ); //prende il nome delle colonne
rows.add(columnHeader); //e li aggiunge al vettore
while ( rs.next()){
Vector thisRow = new Vector(); //vettore temporaneo per i dati
for (int i=1; i<=cols; i++)
thisRow.add( rs.getString(i) ); //aggiunge i dati al vettore
rows.add(thisRow); //aggiunge il vettore temporaneo al vettore sopra
}
rs.close();
state.close();
con.close();
return rows;
}
}


intanto se serve a qualcuno benvenuto, ma ora mi chiedo, dato la struttura "=" a quella di un database, secondo voi, scrivere e come fare un update in un database???
se qualcuno ha codice pronto, potrebbe farmi vedere.
P.S.: in tutta sincerità non ho provato, ma se proprio nessuno riesce a trovare qualcosa di già scritto......


un mio collega per creare un file excel usa POI, un API di apache.org, puoi provare a usarla

franksisca
11-05-2006, 16:56
dovrei farlo in java "puro", quindi senza librerie esterne.

texerasmo
11-05-2006, 17:00
per creare un file Excel puoi farlo anche in formato csv.
per leggerlo forse protresti fare lo stesso al contrario.

franksisca
11-05-2006, 17:04
per creare un file Excel puoi farlo anche in formato csv.
per leggerlo forse protresti fare lo stesso al contrario.
mmmm, esempi???

cionci
11-05-2006, 19:54
Il formato CSV è esportabile da Excel e può essere aperto direttamente da Excel... CSV = Comma Separated Value...

http://www.wotsit.org/download.asp?f=csv

Comnuque anche il tuo metodo sopra è corretto, sulla rete si trovano esempi acnhe per fare le query di inserimento, ma ha un grave difetto, funziona solo su Windows...ovviamente... Mentre un CSV può essere creato sotto qualsiasi SO...

dupa
11-05-2006, 23:09
dovrei farlo in java "puro", quindi senza librerie esterne.

se ti appoggi a ODBC fai già uso di qualcosa di esterno
ti consiglio di usare i package POI

franksisca
12-05-2006, 00:10
se ti appoggi a ODBC fai già uso di qualcosa di esterno
ti consiglio di usare i package POI
non li conosco. :cry: :cry: :cry:


@cionci
si, lo sò che funziona solo su win, ma per quello che devo fare io al momento va bene.

cionci
12-05-2006, 01:14
Qualche link:

http://www.javaworld.com/javaworld/javaqa/2001-08/02-qa-0824-excel2.html
http://www.crystalsoftware.com.au/datapipe/excel_odbc.html
http://forum.java.sun.com/thread.jspa?threadID=251234&messageID=3915740

franksisca
12-05-2006, 08:18
Qualche link:

http://www.javaworld.com/javaworld/javaqa/2001-08/02-qa-0824-excel2.html
http://www.crystalsoftware.com.au/datapipe/excel_odbc.html
http://forum.java.sun.com/thread.jspa?threadID=251234&messageID=3915740
ok, appena posso provo, ora è proprio tardiiiiiiiiiiiiiiiiiiiiiiiiii.

dupa
12-05-2006, 14:48
non li conosco. :cry: :cry: :cry:


@cionci
si, lo sò che funziona solo su win, ma per quello che devo fare io al momento va bene.

i jar poi li trovi qui

http://jakarta.apache.org/poi/

franksisca
12-05-2006, 15:26
grazie mille a tutti