Mit Java Outlook Kontakte aus einer Excelliste generieren

GreennoisOn

Mitglied
Hallo,

wie kann man mit Java aus einer Excelliste Outlook Kontakte erzeugen? Heißt man hat eine Excelliste die mit Name,Vorname usw gefüllt ist. Diese Liste soll Java dann importieren und daraus dann Outlook Kontakte erzeugen. Das ist mein bisheriger Quellcode an den ich gerne anknüpfen würde:

Starting Klasse:

Code:
package org.patrickm.test; 

import java.io.BufferedReader;
import java.io.InputStreamReader;

import org.patrickm.test.vCard;

public class Starting {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		vCard vcard = new vCard();
		
        fillinvCard(vcard);
        
        
        if(vcard.writing("test.vcf") == false) /** Fehlerbehandlung */
        {
          
        	return;
        }
        
        System.out.println("finished!"); // Konsolenausgabe das der Vorgang fertiggestellt wurde
    }
	//Konsoleneingabe bzw. Abfrage
    public static void fillinvCard(vCard vcard){ 
        int count = 0;
        do{
          try {
              BufferedReader console = new BufferedReader(new InputStreamReader(System.in));
 
             System.out.print("Vorname : ");
             vcard.setVorname(console.readLine());
             
             System.out.print("Nachname : ");
             vcard.setNachname(console.readLine());  
             
             System.out.print("E-mail : ");
             vcard.setE_mail(console.readLine());
             
             System.out.print("Adresse : ");
             vcard.setAddresse(console.readLine());
             
             System.out.print("Organisation : ");
             vcard.setOrganisation(console.readLine());
             
             System.out.print("Telefon : ");
             vcard.setTelefon(console.readLine());
             
             count = 3;
          } catch (Exception ex) {
            System.out.println("Fehlereingabe");
            count++;
            if(count == 3)
            {
              
            }
          }
        }while (count < 3);
    }

	}


Vcard Klasse:

Code:
package org.Green.test;

//Importieren der Werte
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

//Hier werden die Eigenschaften der anderen Klasse abgefragt
public class vCard {

	 private String Vorname;
	    private String Nachname;
	    private String Organisation;
	    private String URL;
	    private String E_mail;
	    private String Telefon;
	    private String Addresse;
	    public String getVorname() {
	        return Vorname;
	    }
	    public void setVorname(String vorname) {
	        Vorname = vorname;
	    }
	    public String getNachname() {
	        return Nachname;
	    }
	    public void setNachname(String nachname) {
	        Nachname = nachname;
	    }
	    public String getOrganisation() {
	        return Organisation;
	    }
	    public void setOrganisation(String organisation) {
	        Organisation = organisation;
	    }
	    public String getURL() {
	        return URL;
	    }
	    public void setURL(String uRL) {
	        URL = uRL;
	    }
	    public String getE_mail() {
	        return E_mail;
	    }
	    public void setE_mail(String e_mail) {
	        E_mail = e_mail;
	    }
	    public String getTelefon() {
	        return Telefon;
	    }
	    public void setTelefon(String telefon) {
	        Telefon = telefon;
	    }
	    public String getAddresse() {
	        return Addresse;
	    }
	    public void setAddresse(String addresse) {
	        Addresse = addresse;
	    }
	    
	    
	    
	    public boolean writing(String zielDatei) { // Schreibt die Werte in die Zieldatei
	        File file = new File(zielDatei);
	        FileWriter writer;
	        try {
	            writer = new FileWriter(file, true);
	            writer.write("BEGIN:VCARD");
	            
	            writer.write(System.getProperty("line.separator"));
	            writer.write("VERSION:3.0");
	            
	            writer.write(System.getProperty("line.separator"));
	            writer.write("N:"+this.getNachname()+";"+this.getVorname());
	            
	            writer.write(System.getProperty("line.separator"));	           
	            writer.write("FN:"+this.getVorname()+" "+this.getNachname());
	            
	            writer.write(System.getProperty("line.separator"));
	            writer.write("ORG:"+this.getOrganisation());
	            
	            writer.write(System.getProperty("line.separator"));
	            writer.write("URL:"+this.getURL());
	            
	            writer.write(System.getProperty("line.separator"));
	            writer.write("EMAIL;TYPE=INTERNET:"+this.getE_mail());  
	            
	            writer.write(System.getProperty("line.separator"));
	            writer.write("TEL;TYPE=voice,work,pref:"+this.getTelefon()+":");
	            
	            writer.write(System.getProperty("line.separator"));
	            writer.write("ADR;TYPE=intl,work,postal,parcel:;;"+this.getAddresse()+":");
	            
	            writer.write(System.getProperty("line.separator"));
	            writer.write("END:VCARD");
	            
	            writer.close();
	            return true;
	        } catch (IOException e) {
	            e.printStackTrace();
	            return false;
	        }
	    }
	}
 
Für den Fall das du wirklich direkt aus Excel lesen willst:
http://www.tutorials.de/java/305683-aus-eine-exceltabelle-lesen.html


Falls du aber nur eine leichtere Eingabe ermöglichen Willst würde ich einfach eine CSV machen die ist viel einfacher und ohne Externe Klassen zu lesen.

test.csv:
Code:
Nachname;Organisation;URL;E_mail;Telefon;Addresse;
Anton;Youza;666-666.de;666@666.de;666666666;str 6 Hölle;

Mit csv:
Java:
 public static void readFile(String path){
    	File file = null;
    	  FileReader freader = null;
    	  LineNumberReader lnreader = null;
    	  try{
	    	  file = new File("test.csv");
	    	  freader = new FileReader(file);
	
	    	  lnreader = new LineNumberReader(freader);
	    	  String line = "";
	    	  while ((line = lnreader.readLine()) != null){
	    		  if(lnreader.getLineNumber()!=1)
	    		  {
	    			  String [] temp = line.split(";");
	    			  vCard vc_temp = new vCard();
	    			  vc_temp.setVorname(temp[0]);
	    			  vc_temp.setNachname(temp[1]);
	    			  vc_temp.setE_mail(temp[2]);
	    			  vc_temp.setOrganisation(temp[4]);
	    			  vc_temp.setTelefon(temp[5]);
	    			  vc_temp.setAddresse(temp[3]);
	    		  }
	    	  
	    	  	}
	    	  freader.close();
	    	  lnreader.close();
  			} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
    	  } catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
   	  
    }
 
Zuletzt bearbeitet:
Nein, ich will damit direkt aus einer Excel-Tabelle lesen. Diese soll mit genau den gleichen Werten wie die, die bei per Konsole abgefragt werden gefüttert sein. Stelle mir das so vor, dass 10 verschiedene Profile in der Excel Tabelle sind und daraus dann 10 verschiedene vcf Dateien erstellt werden.
 
Hast du die Lösung überhaupt ausprobiert?
Eine CSV datei ist eine Excelliste allerdings eben eine die in Java sehr leicht zu interpretieren ist. Die Funktion die ich dir gepostet hab liest die Zeilen aus und erstellt für jede Zeile außer der Kopfzeile eine vcf Datei welche mit dem Vornamen_Nachnamen.vcf gekennzeichnet ist:
Java:
package org.youza.test; 
 
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.LineNumberReader;
 
import org.youza.dto.vCard;
 
public class Starting {
 
    /**
     * @param args
     */
    public static void main(String[] args) {
    	readFile("test.csv");
        System.out.println("finished!"); // Konsolenausgabe das der Vorgang fertiggestellt wurde
    }
    public static void readFile(String path){
    	File file = null;
    	  FileReader freader = null;
    	  LineNumberReader lnreader = null;
    	  try{
	    	  file = new File(path);
	    	  freader = new FileReader(file);
	
	    	  lnreader = new LineNumberReader(freader);
	    	  String line = "";
	    	  while ((line = lnreader.readLine()) != null){
	    		  if(lnreader.getLineNumber()!=1)
	    		  {
	    			  vCard vcard = new vCard();
	    			  String [] temp = line.split(";");
	    			  vcard.setVorname(temp[0]);
	    			  vcard.setNachname(temp[1]);
	    			  vcard.setE_mail(temp[2]);
	    			  vcard.setOrganisation(temp[3]);
	    			  vcard.setTelefon(temp[4]);
	    			  vcard.setAddresse(temp[5]);
	    			  if(vcard.writing(vcard.getVorname() + "_" + vcard.getNachname() + ".vcf") == false) /** Fehlerbehandlung */
	    	          {
	    				  freader.close();
	    		    	  lnreader.close();
	    	              return;
	    	          }
	    		  }
	    	  
	    	  	}
	    	 
	    	  freader.close();
	    	  lnreader.close();
  			} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
    	  } catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
    }
    //Konsoleneingabe bzw. Abfrage
    public static void fillinvCard(vCard vcard){ 
        int count = 0;
        do{
          try {
              BufferedReader console = new BufferedReader(new InputStreamReader(System.in));
 
             System.out.print("Vorname : ");
             vcard.setVorname(console.readLine());
             
             System.out.print("Nachname : ");
             vcard.setNachname(console.readLine());  
             
             System.out.print("E-mail : ");
             vcard.setE_mail(console.readLine());
             
             System.out.print("Adresse : ");
             vcard.setAddresse(console.readLine());
             
             System.out.print("Organisation : ");
             vcard.setOrganisation(console.readLine());
             
             System.out.print("Telefon : ");
             vcard.setTelefon(console.readLine());
             
             count = 3;
          } catch (Exception ex) {
            System.out.println("Fehlereingabe");
            count++;
            if(count == 3)
            {
              
            }
          }
        }while (count < 3);
    }
 
    }

Nochmal di e vCArd dazu:
Java:
package org.youza.dto;
 
//Importieren der Werte
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
 
//Hier werden die Eigenschaften der anderen Klasse abgefragt
public class vCard {
 
     private String Vorname;
        private String Nachname;
        private String Organisation;
        private String URL;
        private String E_mail;
        private String Telefon;
        private String Addresse;
        public String getVorname() {
            return Vorname;
        }
        public void setVorname(String vorname) {
            Vorname = vorname;
        }
        public String getNachname() {
            return Nachname;
        }
        public void setNachname(String nachname) {
            Nachname = nachname;
        }
        public String getOrganisation() {
            return Organisation;
        }
        public void setOrganisation(String organisation) {
            Organisation = organisation;
        }
        public String getURL() {
            return URL;
        }
        public void setURL(String uRL) {
            URL = uRL;
        }
        public String getE_mail() {
            return E_mail;
        }
        public void setE_mail(String e_mail) {
            E_mail = e_mail;
        }
        public String getTelefon() {
            return Telefon;
        }
        public void setTelefon(String telefon) {
            Telefon = telefon;
        }
        public String getAddresse() {
            return Addresse;
        }
        public void setAddresse(String addresse) {
            Addresse = addresse;
        }
        
        
        
        public boolean writing(String zielDatei) { // Schreibt die Werte in die Zieldatei
            File file = new File(zielDatei);
            FileWriter writer;
            try {
                writer = new FileWriter(file, true);
                writer.write("BEGIN:VCARD");
                
                writer.write(System.getProperty("line.separator"));
                writer.write("VERSION:3.0");
                
                writer.write(System.getProperty("line.separator"));
                writer.write("N:"+this.getNachname()+";"+this.getVorname());
                
                writer.write(System.getProperty("line.separator"));            
                writer.write("FN:"+this.getVorname()+" "+this.getNachname());
                
                writer.write(System.getProperty("line.separator"));
                writer.write("ORG:"+this.getOrganisation());
                
                writer.write(System.getProperty("line.separator"));
                writer.write("URL:"+this.getURL());
                
                writer.write(System.getProperty("line.separator"));
                writer.write("EMAIL;TYPE=INTERNET:"+this.getE_mail());  
                
                writer.write(System.getProperty("line.separator"));
                writer.write("TEL;TYPE=voice,work,pref:"+this.getTelefon()+":");
                
                writer.write(System.getProperty("line.separator"));
                writer.write("ADR;TYPE=intl,work,postal,parcel:;;"+this.getAddresse()+":");
                
                writer.write(System.getProperty("line.separator"));
                writer.write("END:VCARD");
                
                writer.close();
                return true;
            } catch (IOException e) {
                e.printStackTrace();
                return false;
            }
        }
    }
und eine CSV datei:
Code:
Vorname;Nachname;E_mail;Organisation;Telefon;Addresse
Anton;Youza;666-666.de;666@666.de;666666666;str 6 Hölle
Paul;Youza;666-666.de;666@666.de;666666666;str 6 Hölle
Florian;Youza;666-666.de;666@666.de;666666666;str 6 Hölle
Seppel;Youza;666-666.de;666@666.de;666666666;str 6 Hölle
 
Ja, hat nur nicht geklappt. Habe jetzt noch folgende Fehlermeldungen:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
at org.Green.test.Starting.readFile(Starting.java:38)
at org.Green.test.Starting.main(Starting.java:19)
 
Nach der Fehlermeldung schätze ich, dass etwas mit der CSV die du einliest nicht stimmt. Die hat wahrscheinlich eine Zeile ohne Werte oder mit nur einem Wert kannst du wie folgt abfangen:
Java:
if(lnreader.getLineNumber()!=1)
	    		  {
	    			  vCard vcard = new vCard();
	    			  String [] temp = line.split(";");
	    			  if(temp.length>=6)
	    			  {
		    			  vcard.setVorname(temp[0]);
		    			  vcard.setNachname(temp[1]);
		    			  vcard.setE_mail(temp[2]);
		    			  vcard.setOrganisation(temp[3]);
		    			  vcard.setTelefon(temp[4]);
		    			  vcard.setAddresse(temp[5]);
		    			  if(vcard.writing(vcard.getVorname() + "_" + vcard.getNachname() + ".vcf") == false) /** Fehlerbehandlung */
		    	          {
		    				  freader.close();
		    		    	  lnreader.close();
		    	              return;
		    	          }
	    			  }
	    		  }
Du kannst übrigens oben den ganzen Code kopieren des ist des ganze Projekt...
Des ist durchgetestet und funktioniert du brauchst nur in deinem Projekt ordner eine test.csv welche folgenden Aufbau hat wenn du es direkt in Excel erstellen willst:
Erste Zeile:
Vorname Nachname E_mail Organisation Telefon Addresse
und dann eben die Datensätze:
Anton Youza 666-666.de 666@666.de 666666666 str 6 Hölle

Sieht dann als CSV wie folgt aus:
Vorname;Nachname;E_mail;Organisation;Telefon;Addresse
Anton;Youza;666-666.de;666@666.de;666666666;str 6 Hölle
 
Zuletzt bearbeitet:
Hatte alles so gemacht wie beschrieben nur der Syntax Fehler kommt immer wieder auf:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
Syntax error, insert "}" to complete Block

at org.Green.test.Starting.readFile(Starting.java:57)
at org.Green.test.Starting.main(Starting.java:19)
 
Wenn ich die aber setze kommt das hier raus:
java.io.IOException: Stream closed
at java.io.BufferedReader.ensureOpen(Unknown Source)
at java.io.BufferedReader.readLine(Unknown Source)
at java.io.LineNumberReader.readLine(Unknown Source)
at org.patrick.test.Starting.readFile(Starting.java:32)
at org.patrick.test.Starting.main(Starting.java:19)
finished!
 
Strg + C:
Java:
package org.youza.test; 
 
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.LineNumberReader;
 
import org.youza.dto.vCard;
 
public class Starting {
 
    /**
     * @param args
     */
    public static void main(String[] args) {
    	readFile("test.csv");
        System.out.println("finished!"); // Konsolenausgabe das der Vorgang fertiggestellt wurde
    }
    public static void readFile(String path){
    	File file = null;
    	  FileReader freader = null;
    	  LineNumberReader lnreader = null;
    	  try{
	    	  file = new File(path);
	    	  freader = new FileReader(file);
	
	    	  lnreader = new LineNumberReader(freader);
	    	  String line = "";
	    	  while ((line = lnreader.readLine()) != null){
	    		  if(lnreader.getLineNumber()!=1)
	    		  {
	    			  vCard vcard = new vCard();
	    			  String [] temp = line.split(";");
	    			  if(temp.length>=6)
	    			  {
		    			  vcard.setVorname(temp[0]);
		    			  vcard.setNachname(temp[1]);
		    			  vcard.setE_mail(temp[2]);
		    			  vcard.setOrganisation(temp[3]);
		    			  vcard.setTelefon(temp[4]);
		    			  vcard.setAddresse(temp[5]);
		    			  if(vcard.writing(vcard.getVorname() + "_" + vcard.getNachname() + ".vcf") == false) /** Fehlerbehandlung */
		    	          {
		    				  freader.close();
		    		    	  lnreader.close();
		    	              return;
		    	          }
	    			  }
	    		  }
	    	  
	    	  	}
	    	 
	    	  freader.close();
	    	  lnreader.close();
  			} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
    	  } catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
    }
    //Konsoleneingabe bzw. Abfrage
    public static void fillinvCard(vCard vcard){ 
        int count = 0;
        do{
          try {
              BufferedReader console = new BufferedReader(new InputStreamReader(System.in));
 
             System.out.print("Vorname : ");
             vcard.setVorname(console.readLine());
             
             System.out.print("Nachname : ");
             vcard.setNachname(console.readLine());  
             
             System.out.print("E-mail : ");
             vcard.setE_mail(console.readLine());
             
             System.out.print("Adresse : ");
             vcard.setAddresse(console.readLine());
             
             System.out.print("Organisation : ");
             vcard.setOrganisation(console.readLine());
             
             System.out.print("Telefon : ");
             vcard.setTelefon(console.readLine());
             
             count = 3;
          } catch (Exception ex) {
            System.out.println("Fehlereingabe");
            count++;
            if(count == 3)
            {
              
            }
          }
        }while (count < 3);
    }
 }
Strg+V

Du verwendest doch Eclipse und ich mein die Fehlermeldung ist so eindeutig!
 
Zurück