Probleme bei Mini tool TextToExcel

Tis

Mitglied
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:



Java:
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
 
Zuletzt bearbeitet:
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...03_005.htm#ix708bacc78602bafb37a9eee2efc4e0d4

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

Gruß
Klaus
 
  • Gefällt mir
Reaktionen: Tis
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:

Java:
 public class ReadFromFile{
 public static  void lesen(String dateiname) throws IOException, RowsExceededException, WriteException{ 
....
 try {

//Dateiname wird erwartet und auch eigentlich übergeben aber da entsteht anscheinend
ein fehler
     	 		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

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?
 
Zuletzt bearbeitet:
Moin,

erstens: '2' ist nun wirklich kein Name für eine Klasse :eek: ! ! ! !
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 ..... :suspekt:
Minimal würde ich so was erwarten:
Java:
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 :rolleyes:
Richtig muss es (in Deinem Fall) heißen: [_JAVA] [/_JAVA] OHNE die Unterstriche!

Gruß
Klaus
 
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:

Java:
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
 
Zuletzt bearbeitet von einem Moderator:
Moin,

2 ist nur ein bsp ;D die heisst bei mir ReadFromFile ;D
Aha - aber ein Grottenschlechtes ..... :rolleyes:

Dann kann aber der Aufruf, so wie von Dir zuerst angeben nicht funktionieren ! ! !
Du muss diese Klasse importieren und instantiieren :
Java:
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) !!
 
Zuletzt bearbeitet:
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
Java:
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


Java:
//Beachte die Exceptions 
public class ReadFromFile{
 public static  void lesen(String dateiname) throws IOException, RowsExceededException, WriteException{

Java:
	try {
				ReadFromFile.lesen(dt);
			} catch (RowsExceededException e1) {
				e1.printStackTrace();
			} catch (WriteException e1) {
				e1.printStackTrace();
			} catch (IOException e1) {
				e1.printStackTrace();
			}
 
Zuletzt bearbeitet:
Moin,

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

Das mit import sehe ich zum ersten mal ich dachte man muss klassen die man selbst erstellt hat importieren nur instanzinieren
Äääh, bitte was :confused:

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 :D)

Beispiel:
Java:
package DirA.DirB.Irgendwas;

public class ReadFromFile ()
{
    ...
}

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

Hier nochmal das zugehörige Kapitel:
http://openbook.galileocomputing.de...03_005.htm#mj839cecd9b4f4c66517bc7fe050eb60bc

Gruß
Klaus
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Tis

Neue Beiträge

Zurück