Zu den Aufzeichnungen der tutorials.de-Live-Workshops
Like Tree2Danke
  • 1 Beitrag von vfl_freak
  • 1 Beitrag von vfl_freak
ERLEDIGT
JA
ANTWORTEN
8
ZUGRIFFE
235
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Tis Tis ist offline Mitglied Bronze
    Registriert seit
    Sep 2010
    Beiträge
    25
    Hallo zusammen,

    Ich bin hier im Praktikum und habe die Aufgabe ein kleines "tool" zu programmen dass TextDateien mit bestimmten endungen z.B(rs/scr) einliest und dann in eine Exceldatei speichert. Dazu verwende ich JXL.

    Klassen:
    1 Mainclass
    2 Class zum lesen und Exceldatei erstellen
    3 Class mit JFileChooser und ein Filter

    Problem:

    Von der MainClass aus kriege ich das nicht hin meine 2 Class auszuführen bzw. es wird ausgeführt jedoch wird keine Exceldatei erstellt obwohl diese Class alleine funktioniert.


    Hier die Class 2 verkürzt:



    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    
     
    import java.io.*;
    import java.util.ArrayList;
     
    import jxl.Workbook;
    import jxl.write.Label;
    import jxl.write.WritableCellFormat;
    import jxl.write.WritableFont;
    import jxl.write.WritableSheet;
    import jxl.write.WritableWorkbook;
    import jxl.write.WriteException;
    import jxl.write.biff.RowsExceededException;
     
    public class ReadFromFile{
     public static  void lesen(String dateiname) throws IOException, RowsExceededException, WriteException{
     
         String line = "";
         ArrayList<String> list = new ArrayList<String>();
     
         try {
                    File file = new File(dateiname);
                    FileReader fr = new FileReader(file);
             //BufferedReader erstellen und mit FileReader verknüfpen
                    BufferedReader br = new BufferedReader(fr);
                            
                         
             //Solange zeilen zum ArrayList adden bis ende
                     for(int i = 0;(line = br.readLine())!=null ;i++){
                     list.add(line);
            }
                  
             //Fehlermeldung falls Datei nicht vorhanden
                     }catch (FileNotFoundException e) {
                     System.out.println("File not found");
           
            }    //FileReader erstellen um die Texte einzulesen
      
           // Kontroll ausgabe
           //  for(int j=0;j<list.size();j++){
           //              System.out.println(list.get(j));
           //    }
             
             
             //Workbook / Worksheet erstellen
                    WritableWorkbook workbook = Workbook.createWorkbook(new File("TextToExcel.xls"));
                    WritableSheet sheet = workbook.createSheet("First Sheet", 0);
                        //Spaltengröße festlegen
                        sheet.getSettings().setDefaultColumnWidth((int) 68.5);
            
           
            //Title Label erstellen
                    WritableFont arialbold10 = new WritableFont(WritableFont.ARIAL, 10 ,WritableFont.BOLD);
                    WritableCellFormat arialboldform = new WritableCellFormat(arialbold10);
                    Label titellab = new Label(0,0,"Dokumentation",arialboldform);
                    sheet.addCell(titellab);
            
            //Labels erstellen und mit ArrayList inhalt füllen
                    for(int l = 1;l<list.size();l++){
                        WritableFont arial10 = new WritableFont(WritableFont.ARIAL, 10);
                        WritableCellFormat arial10format = new WritableCellFormat(arial10);
                        Label label = new Label(0,l,list.get(l),arial10format);
            //Labels den Sheet hinzufügen
                        sheet.addCell(label);
                    }
                            workbook.write();
                            workbook.close();
                            
            }
        }

    Ohne main class also als methode funktioniert es nicht ;/

    Brauche hilfe jungs
    Geändert von Tis (09.09.10 um 12:01 Uhr)
     

  2. #2
    Avatar von vfl_freak
    vfl_freak vfl_freak ist offline Mitglied Diamant
    Registriert seit
    Aug 2007
    Ort
    Niedersachsen
    Beiträge
    2.095
    Moin und Willkommen bei tutorials.de

    Zuerst: benutze bitte die Code-Tags (#-Button oder Klammerung des Codes mit [_CODE] [/_CODE] OHNE die Unterstriche!)

    Klassen:
    1 Mainclass
    2 Class zum lesen und Exceldatei erstellen
    3 Class mit JFileChooser und ein Filter
    Wenn ich Dich richtig verstehe, ist (1) die Hauptklasse des Tools, über die Du es startest.
    Somit dürfen (2) und (3) nicht über eine weitere main-Methode aufgerufen werden.
    Du musst diese Klassen per import in (1) bekannt machen ...

    Schau' mal hier:
    http://openbook.galileocomputing.de/...a9eee2efc4e0d4

    Dieses Buch ist generell sehr gut zur Einarbeitung in Java geeignet!

    Gruß
    Klaus
    Tis bedankt sich. 
    Es ist noch kein Meister vom Himmel gefallen - sonst hätte man schon längst seine Leiche gefunden !!

    Falls ich helfen konnte, wäre eine Bewertung oder ein Danke nett ;-)
    -------------------------------------------------------------------------------------------------
    Ich beantworte keine Fragen per PN !!
    Stellt Eure Fragen im Forum - dann haben alle etwas davon !!

  3. #3
    Tis Tis ist offline Mitglied Bronze
    Registriert seit
    Sep 2010
    Beiträge
    25
    Danke dir erstmal ;D

    Ja es ist richtig in der Main Class werden 2 anderen Klassen Instanziniert

    dabei entsteht denke ich mein problem, ich gib dir ein Beispiel:

    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    
     public class ReadFromFile{
     public static  void lesen(String dateiname) throws IOException, RowsExceededException, WriteException{ 
    ....
     try {
     
    //[B]Dateiname wird erwartet und auch eigentlich übergeben aber da entsteht anscheinend
    ein fehler[/B]
                    File file = new File(dateiname);
                    FileReader fr = new FileReader(file);
             //BufferedReader erstellen und mit FileReader verknüfpen
                    BufferedReader br = new BufferedReader(fr);
                            
                         
             //Solange zeilen zum ArrayList adden bis ende
                     for(int i = 0;(line = br.readLine())!=null ;i++){
                     list.add(line);
            }
                  
             //Fehlermeldung falls Datei nicht vorhanden
                     }catch (FileNotFoundException e) {
                     System.out.println("File not found");
           
            }   
    //usw.. Workbook erstellen , sheet erstellen 
    [/Code]
     
    Die Methode lesen versuche ich dann in der Mainclass auszuführen über ein Botton
     
    [Code]
     
    //Jbstart= JButton               jtstart = JTextField mit Dateipfad
    //dn = Dateiname
    jbstart.addActionListener(new ActionListener(){
                public void actionPerformed (ActionEvent e) {
                    if(e.getSource()==jbstart){
                              String dn =   jtstart.getText();
                ReadFromFile.lesen(dn);

    Oder wird die Exceldatei nicht erstellt weil die Methode lesen "void" ist?
    Geändert von Tis (09.09.10 um 12:02 Uhr)
     

  4. #4
    Avatar von vfl_freak
    vfl_freak vfl_freak ist offline Mitglied Diamant
    Registriert seit
    Aug 2007
    Ort
    Niedersachsen
    Beiträge
    2.095
    Moin,

    erstens: '2' ist nun wirklich kein Name für eine Klasse ! ! ! !
    Es gibt da Konventionen - siehe hierzu auch mein Link auf das Insel-Buch ! ! ! !

    zweitens: ich sehe nicht, wo (und vor allem wie) die die Klasse '2' instantiierst .....
    Minimal würde ich so was erwarten:
    Code java:
    1
    2
    3
    4
    
    import ...<Pfad>.2;
    ...
    2 ReadFromFile = new 2();
    ReadFromFile.lesen( dn );

    Aber wie schon gesagt - benenne erst mal die Klasse richtig

    BTW: es war vorhin ein Tippfehler von mit bzgl. der Klammerung
    Richtig muss es (in Deinem Fall) heißen: [_JAVA] [/_JAVA] OHNE die Unterstriche!

    Gruß
    Klaus
     
    Es ist noch kein Meister vom Himmel gefallen - sonst hätte man schon längst seine Leiche gefunden !!

    Falls ich helfen konnte, wäre eine Bewertung oder ein Danke nett ;-)
    -------------------------------------------------------------------------------------------------
    Ich beantworte keine Fragen per PN !!
    Stellt Eure Fragen im Forum - dann haben alle etwas davon !!

  5. #5
    Tis Tis ist offline Mitglied Bronze
    Registriert seit
    Sep 2010
    Beiträge
    25
    2 ist nur ein bsp ;D die heisst bei mir ReadFromFile ;D
     

  6. #6
    Tis Tis ist offline Mitglied Bronze
    Registriert seit
    Sep 2010
    Beiträge
    25
    Das Problem ist dass wenn ich versuche das "normal" zu instanzinieren mein Eclips meckert.

    Ich habs davor so versucht:
    Klasse 2 heisst ja bei mir ReadFromFile und enthält die Methode Lesen() die String dateiname erwartet. also:

    Code java:
    1
    2
    
    ReadFromFile myReadFromFile = new ReadFromFile();
    myReadFromFile.lesen(dateiname);

    das ist doch korrekt so oder nicht

    Grund 1 warum er meckert ist weil er mir sagt dass die ReadFromFile Methode lesen() static ist
    Grund 2 ist dass die Exceptions nicht abgefangen werden
    das ist jedenfalls was mir eclips anzeigt
    Geändert von Tis (09.09.10 um 12:08 Uhr)
     

  7. #7
    Avatar von vfl_freak
    vfl_freak vfl_freak ist offline Mitglied Diamant
    Registriert seit
    Aug 2007
    Ort
    Niedersachsen
    Beiträge
    2.095
    Moin,

    Zitat Zitat von Tis Beitrag anzeigen
    2 ist nur ein bsp ;D die heisst bei mir ReadFromFile ;D
    Aha - aber ein Grottenschlechtes .....

    Dann kann aber der Aufruf, so wie von Dir zuerst angeben nicht funktionieren ! ! !
    Du muss diese Klasse importieren und instantiieren :
    Code java:
    1
    2
    3
    4
    
    import ...<Pfad>.ReadFromFile;
    ...
    ReadFromFile meinObjektZumEinlesen = new ReadFromFile();  // hier erstellst Du das lokale Objekt ...
    meinObjektZumEinlesen.lesen( dn );                                   // ... dessen Methode 'lesen' Du dann ausführen kannst

    Ohne Deinen gesamten Code kann das hier kaum nachvollzogen werden !
    Und - sorry - aber lerne erst mal die Grundlagen der Sprache !!

    Gruß
    Klaus

    EDIT:
    Da haben sich unsere Posts wohl überschnitten ...
    Grundsätzlich sehen Deine beiden Zeilen korrekt aus - vorausgesetzt, die Klasse "ReadFromFile" ist bekannt (also korrekt importiert worden) !!
    Geändert von vfl_freak (09.09.10 um 12:07 Uhr) Grund: EDIT !!
     
    Es ist noch kein Meister vom Himmel gefallen - sonst hätte man schon längst seine Leiche gefunden !!

    Falls ich helfen konnte, wäre eine Bewertung oder ein Danke nett ;-)
    -------------------------------------------------------------------------------------------------
    Ich beantworte keine Fragen per PN !!
    Stellt Eure Fragen im Forum - dann haben alle etwas davon !!

  8. #8
    Tis Tis ist offline Mitglied Bronze
    Registriert seit
    Sep 2010
    Beiträge
    25
    moin ,

    also ja sorry ich bin noch ein anfänger ich mache java seit eine woche aber das prinzip verstehe ich einigermaßen.

    Das mit import sehe ich zum ersten mal ich dachte man muss klassen die man selbst erstellt hat importieren nur instanziieren
    Code java:
    1
    
    import ...<Pfad>.ReadFromFile;
    Alle Klassen liegen im selben package

    Ich kann auch den gesamten code posten dachte aber es wird sowieso keiner lesen


    EDIT: so habs geschaft ich musste weil die methode Static ist es anders angehen
    und ich musste die Exception die in der Klasse ist auch hier abfangen


    Code java:
    1
    2
    3
    
    //Beachte die Exceptions 
    public class ReadFromFile{
     public static  void lesen(String dateiname) throws IOException, RowsExceededException, WriteException{

    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
     
        try {
                    ReadFromFile.lesen(dt);
                } catch (RowsExceededException e1) {
                    e1.printStackTrace();
                } catch (WriteException e1) {
                    e1.printStackTrace();
                } catch (IOException e1) {
                    e1.printStackTrace();
                }
    Geändert von Tis (09.09.10 um 12:32 Uhr) Grund: EDIT
     

  9. #9
    Avatar von vfl_freak
    vfl_freak vfl_freak ist offline Mitglied Diamant
    Registriert seit
    Aug 2007
    Ort
    Niedersachsen
    Beiträge
    2.095
    Moin,

    Zitat Zitat von Tis Beitrag anzeigen
    also ja sorry ich bin noch ein anfänger ich mache java seit eine woche aber das prinzip verstehe ich einigermaßen.
    na ja ....

    Zitat Zitat von Tis Beitrag anzeigen
    Das mit import sehe ich zum ersten mal ich dachte man muss klassen die man selbst erstellt hat importieren nur instanzinieren
    Äääh, bitte was

    Zitat Zitat von Tis Beitrag anzeigen
    import ...<Pfad>.ReadFromFile;
    welcher Pfad ist hier gemeint? die Datei ist im Workspace ordner wie die anderen Klassen
    Ok, 'Pfad' ist vlt. nicht ganz glücklich ausgedrückt ...

    Du musst hier die gesamte Bezeichnung des package angeben, in dem die Klasse befindet (es ist doch wohl eine eigene Quelldatei, oder ?)
    Dies entspricht in der Regel auch der Verzeichnisstruktur im jeweiligen Workspace (kurz: Pfad )

    Beispiel:
    Code java:
    1
    2
    3
    4
    5
    6
    
    package DirA.DirB.Irgendwas;
     
    public class ReadFromFile ()
    {
        ...
    }

    Dann lautet der Import in Deiner Hauptklasse, in der Du sie nutzen willst, so:
    Code java:
    1
    
    import DirA.DirB.Irgendwas.ReadFromFile;

    Hier nochmal das zugehörige Kapitel:
    http://openbook.galileocomputing.de/...bc7fe050eb60bc

    Gruß
    Klaus
    Geändert von vfl_freak (09.09.10 um 12:33 Uhr) Grund: da waren ein paar Zeilen durcheinander ... :(
    Tis bedankt sich. 
    Es ist noch kein Meister vom Himmel gefallen - sonst hätte man schon längst seine Leiche gefunden !!

    Falls ich helfen konnte, wäre eine Bewertung oder ein Danke nett ;-)
    -------------------------------------------------------------------------------------------------
    Ich beantworte keine Fragen per PN !!
    Stellt Eure Fragen im Forum - dann haben alle etwas davon !!

Ähnliche Themen

  1. MD5 Tool - Copy to Clipboard Probleme
    Von MedRamBO im Forum C/C++
    Antworten: 2
    Letzter Beitrag: 31.08.08, 15:30
  2. Probleme mit Move/Scale/Rotate Tool
    Von michitschi im Forum Autodesk Maya (ehemals Alias)
    Antworten: 2
    Letzter Beitrag: 19.10.07, 20:10
  3. "Rotate tool" macht Probleme
    Von grashupfa im Forum Autodesk Maya (ehemals Alias)
    Antworten: 1
    Letzter Beitrag: 26.07.05, 12:07
  4. mini mini Problemchen - zefix
    Von Fexxx im Forum Javascript & Ajax
    Antworten: 2
    Letzter Beitrag: 26.04.05, 20:43
  5. Probleme mit jar Tool
    Von Mikma im Forum Java
    Antworten: 12
    Letzter Beitrag: 17.01.05, 14:38

Stichworte