|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: May 2001
Messaggi: 1003
|
da email a csv/tsv/xls
Buongiorno a tutti,
sono un neofita in tema di programmazione e avrei bisogno di qualche dritta su come progettare un programmino su java (possibilmente) per trasformare una sorgente mail in un file csv. il mio file sorgente è una mail con delle righe predefinite; con questo voglio dire che il programmino dovrà prendere da alcune righe determinati dati (che sono le risposte di un questionario) e inserirle in file csv o excel; quindi, ad esempio, dalla riga n. 4 prendi gli ultimi 3 valori e inseriscigli nella riga 1 del file csv. praticamente dovrei creare un dataset da una mail. che soluzione potrei adottare per una roba di questo tipo? grazie in anticipo!
__________________
Ho conluso affari con: Flory, Viktor, A.J, Bimbosta, 8310, Dr. Death, Gekker, Salsero71, Kaksa, BlueKnight. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
|
La libreria in dotazione di Java ti permette di leggere un file di testo, riga per riga mediante la BufferedReader. In questo modo potresti leggere il file di ingresso.
Nel caso invece che tu voglia leggere direttamente dalla tua mailbox, potresti usare la libreria gratuita javamail. Per quanto riguarda l'output: se vuoi scrivere un file csv ti basta la libreria standard di Java (la class PrintWriter fa per te); nel caso voglia invece scrivere direttamente un file Excel, puoi utilizzare la libreria gratuita Apache POI (che fa anche mille altre cose)
__________________
In God we trust; all others bring data |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: May 2001
Messaggi: 1003
|
grazie mille sottovento!!!! comincio a recuperare info su quanto da te consigliato...
__________________
Ho conluso affari con: Flory, Viktor, A.J, Bimbosta, 8310, Dr. Death, Gekker, Salsero71, Kaksa, BlueKnight. |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
|
Se posso permettermi, vorrei darti un consiglio: comincia a risolvere il problema piu' semplice, vale a dire leggere un file di testo (la mail) e scrivere un file di testo (in formato csv).
Una volta che hai fatto questo, potresti pensare di leggere direttamente la email tramite javamail, quindi puoi evitare di creare il file di ingresso ed automatizzare questo processo. Infine, se hai tempo a disposizione (e voglia) potresti usare anche apache poi per generare il file Excel invece del formato csv. Attenzione, apache poi non e' semplicissima; tuttavia ci sono parecchi esempi sul sito e su stackoverflow, e scommetto che uno di questi fa al caso tuo
__________________
In God we trust; all others bring data |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: May 2001
Messaggi: 1003
|
si stavo cominciando così, ma essendo la prima volta che metto mani in java devo andare a micropassi
__________________
Ho conluso affari con: Flory, Viktor, A.J, Bimbosta, 8310, Dr. Death, Gekker, Salsero71, Kaksa, BlueKnight. |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
|
Non ho tanto tempo ma non credo ne serva molto. Faro' del mio meglio
__________________
In God we trust; all others bring data |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: May 2001
Messaggi: 1003
|
pensi che in 20 giorni riuscirò a tirar via qualcosa?
__________________
Ho conluso affari con: Flory, Viktor, A.J, Bimbosta, 8310, Dr. Death, Gekker, Salsero71, Kaksa, BlueKnight. |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
|
Certo, anche meno. Dai che ce la fai!
Poi ti posso aiutare in privato e qui c'e' anche altra gente che passa ed esamina il tuo codice.
__________________
In God we trust; all others bring data |
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: May 2001
Messaggi: 1003
|
speriamo bene... ti faccio sapere se ho grosse difficoltà
__________________
Ho conluso affari con: Flory, Viktor, A.J, Bimbosta, 8310, Dr. Death, Gekker, Salsero71, Kaksa, BlueKnight. |
|
|
|
|
|
#10 | |
|
Senior Member
Iscritto dal: May 2001
Messaggi: 1003
|
Quote:
in effetti avevi ragione, ho quasi completato il codice e funziona... ora ciò che mi resta e sul quale sto trovando un sacco di difficoltà è la conversione di una stringa in un numero; spiegato in breve: se variabile1 contiene la parola X allora variabile 2 = 100. come posso fare? sto trovando davvero poco in giro o forse non sto focalizzando il problema...
__________________
Ho conluso affari con: Flory, Viktor, A.J, Bimbosta, 8310, Dr. Death, Gekker, Salsero71, Kaksa, BlueKnight. |
|
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
|
Non sono sicuro di aver capito.
Intendi qualcosa cosi'? Codice:
if (variable1.contains("X"))
variable2 = 100;
Codice:
if (variable1.equals("X"))
variable2 = 100;
__________________
In God we trust; all others bring data |
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: May 2001
Messaggi: 1003
|
grazie mille sottovento! era la prima
ma come posso inserire una if dentro un'altra if? ho una struttura di questo genere ma mi sballa il risultato ultimo: if (lines==(scores[i]){ if (lines==70 && sCurrentLine.contains("ParolaX")) System.out.println("ciaociao_"); } System.out.println("Risultato originale");} se commento le due righe centrali il risultato va bene. se lo lancio così mi sballa il System.out.println finale
__________________
Ho conluso affari con: Flory, Viktor, A.J, Bimbosta, 8310, Dr. Death, Gekker, Salsero71, Kaksa, BlueKnight. |
|
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: May 2001
Messaggi: 1003
|
Risolto sottovento
__________________
Ho conluso affari con: Flory, Viktor, A.J, Bimbosta, 8310, Dr. Death, Gekker, Salsero71, Kaksa, BlueKnight. Ultima modifica di Axembled : 11-03-2019 alle 17:12. |
|
|
|
|
|
#14 | |
|
Senior Member
Iscritto dal: May 2001
Messaggi: 1003
|
ciao sottovento!
mi servirebbe una dritta per richiamare una classe (emailcheck) da un'altra (Prova2); ho utilizzato questo codice inserito nel main di Prova2: Quote:
se il file della classe chiamante (Prova2) è inserito nella directory della classe chiamata (Emailcheck) quest'ultimo funziona ma non funziona la classe chiamante... Dove sto sbagliando? so 4 ore che sbatto la testa ma non ne vengo fuori L'esito delle due classi è quello di creare un file nel loro classpath solo che: - se lancio Prova2 inserendo il file Prova2.java nella dir di Emailcheck non mi crea il file - stessa cosa se lancio Emailcheck.java nella dir di Prova2. Quindi immagino che ci sia un problema di path......
__________________
Ho conluso affari con: Flory, Viktor, A.J, Bimbosta, 8310, Dr. Death, Gekker, Salsero71, Kaksa, BlueKnight. Ultima modifica di Axembled : 12-03-2019 alle 12:51. |
|
|
|
|
|
|
#15 |
|
Senior Member
Iscritto dal: Apr 2005
Messaggi: 3278
|
Hai provato ad aggiungere al progetto come libreria la cartella dell'altro file e poi importarlo con "import com.example.ecc " ?
|
|
|
|
|
|
#16 |
|
Senior Member
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
|
Ciao
puoi provare a pubblicare il codice qui? In alternativa, se ci sono parti private o con dati sensibili, puoi spedirlo con la messaggeria privata (ma valuta prima di postarlo qui, cosi' puoi ottenere aiuto da piu' persone). Una domanda: se sicuro di dover utilizzare due programmi separati, entrambi scritti in Java? Non e' che magari i due programmi separati possono diventare uno solo, evitando il problema?
__________________
In God we trust; all others bring data |
|
|
|
|
|
#17 | |
|
Senior Member
Iscritto dal: May 2001
Messaggi: 1003
|
Quote:
x sottovento: no, in realtà posso inserire tutto in uno, ma il prof mi ha suggerito di inserire il codice su script separati e collegarli tra loro...
__________________
Ho conluso affari con: Flory, Viktor, A.J, Bimbosta, 8310, Dr. Death, Gekker, Salsero71, Kaksa, BlueKnight. |
|
|
|
|
|
|
#18 |
|
Senior Member
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
|
Ciao
alcune cose per cominciare: usa i tag CODE per inserire il codice, cosi' risulta indentato e piu' facile da capire. Inoltre, cerca di catturare le eccezioni, tutte. In realta' sarebbe un errore catturare TUTTE le eccezioni (comprese quelle generate da errori di programmazione) ma e' un discorso lungo e la filosofia non ci interessa. Esempio: Codice:
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class Prova2 {
public static void main(String[] args) {
try
{
Runtime rt = Runtime.getRuntime();
Process ps = rt.exec("java Emailcheck args");
OutputStream os = ps.getOutputStream();
InputStream is = ps.getInputStream();
System.out.println("Codice mail eseguito; controlla il file eml");
FileWriter writer = new FileWriter("test.csv");
writer.append("ID");
writer.append(',');
writer.append("name");
writer.append(',');
writer.append("ss_x_gruppo");
writer.append('\n');
writer.flush();
writer.close();
}
catch (SecurityException | IOException | IllegalArgumentException e)
{
System.out.println("Eccezione: " + e);
e.printStackTrace(System.out);
}
catch (Exception e)
{ // Questa parte va a catturare anche le eccezioni che NON dovrebbero essere catturate
// quali il null pointer exception. Ma per ora siamo in analisi degli errori
System.out.println("Eccezione generale: " + e);
e.printStackTrace(System.out);
}
}
}
Codice:
Runtime rt = Runtime.getRuntime();
Process ps = rt.exec("java Emailcheck args");
Inoltre come argomenti passi "args". Passi proprio la stringa "args", non degli argomenti. Immagino non sia quello che vuoi fare. Un'altra cosa importante che devi ricordare e' nel momento che esegui quell'istruzione, hai creato un nuovo processo! Questo significa che i due processi (i.e. il tuo programma Prova 2 e Emailcheck) saranno eseguiti in parallelo: non resterai bloccato li' fino al termine dell'esecuzione di Emailcheck, pertanto se hai bisogno di ottenere dei risultati da Emailcheck, dovrai essere sicuro di aspettare che la sua esecuzione sia completata. Suggerimento: invece di usare FileWriter per scrivere il file csv, potrebbe essere piu' agevole usare la PrintWriter, per esempio: Codice:
PrintWriter pw = new PrintWriter("test.csv");
pw.println("a,b,x,v");
Codice:
try (PrintWriter pw = new PrintWriter("test.csv"))
{
pw.println("Il vincitore e': " + vincitore);
}
// Una volta arrivati qui, il file e' automaticamente chiuso.
__________________
In God we trust; all others bring data |
|
|
|
|
|
#19 |
|
Senior Member
Iscritto dal: May 2001
Messaggi: 1003
|
riparto dalle basi perché mi rendo conto di avere delle lacune importanti:
- la struttura è quella nell'immagine allegata; - lancio Prova3.java con questo codice: Codice:
package pack2;
import java.io.IOException;
public class prova3 {
public static void main(String[] args) throws IOException {
System.out.println( "ESITO_PROVA_3" );
}
}
run: ESITO_PROVA_3 BUILD SUCCESSFUL (total time: 0 seconds) - lancio Prova4.java con questo codice: Codice:
package pack2;
import java.io.IOException;
public class prova4 {
public static void main(String[] args) throws IOException {
System.out.println( "ESITO_PROVA_4" ) ;
}
}
run: ESITO_PROVA_3 BUILD SUCCESSFUL (total time: 0 seconds) Che.Diavolo.Gli.Prende?
__________________
Ho conluso affari con: Flory, Viktor, A.J, Bimbosta, 8310, Dr. Death, Gekker, Salsero71, Kaksa, BlueKnight. |
|
|
|
|
|
#20 |
|
Senior Member
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
|
No, quello e' il tuo ambiente di sviluppo che probabilmente ha scritto da qualche parte che la classe di partenza (i.e. la classe dalla quale invocare il main() ) e' prova3.
Immagino che l'ambiente sia Netbeans. Se fai right-click sull'icona della classe prova4 e selezioni "Debug" dovrebbe andare. Se hai tempo, puoi provare a rispondere alle domande del mio posto precedente? Non scoraggiarti, mi raccomando! Stai andando bene
__________________
In God we trust; all others bring data |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 23:04.




















