tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
4
ZUGRIFFE
274
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    ZubSero ZubSero ist offline Grünschnabel
    Registriert seit
    Sep 2011
    Beiträge
    2
    Hallo,

    ich wollte mich rantesten an das Auslesen einer Exceldatei und bin auf den oft verlinkten vorschlag mit der jexcelapi gekommen. Prompt eingebunden habe ich ein simples Beispiel programmiert, welches jedoch Fehler auswirft.
    Mein Code:

    package Excel;

    import java.io.File;
    import java.io.IOException;
    import jxl.*;
    import jxl.read.biff.BiffException;
    import javax.swing.*;
    import java.awt.*;


    public class Main extends JFrame
    {
    private File myExcelFile;
    private Workbook myWorkbook;
    private Sheet mySheet;
    private String stringA1;
    private String stringB1;
    private String stringC1;
    private Cell a1;
    private Cell b1;
    private Cell c1;
    private Container contPane;
    private JLabel labA1;
    private JLabel labB1;
    private JLabel labC1;

    public static void main(String[] args) throws IOException, BiffException
    {
    Main myMain = new Main();
    }

    public Main() throws IOException, BiffException
    {
    super();

    contPane = getContentPane();
    contPane.setLayout(new BoxLayout(contPane, BoxLayout.Y_AXIS));

    myExcelFile = new File("d:\\Testdatei.xlsx");

    myWorkbook = Workbook.getWorkbook(myExcelFile);

    mySheet = myWorkbook.getSheet(0);

    a1 = mySheet.getCell(0, 0);
    b1 = mySheet.getCell(1, 0);
    c1 = mySheet.getCell(2, 0);

    stringA1 = a1.getContents();
    stringB1 = a1.getContents();
    stringC1 = a1.getContents();

    labA1 = new JLabel(stringA1);
    labB1 = new JLabel(stringB1);
    labC1 = new JLabel(stringC1);

    contPane.add(labA1);
    contPane.add(labB1);
    contPane.add(labC1);

    this.pack();
    this.setVisible(true);
    }
    }

    Bei der Ausführung erscheint folgende Fehlermeldung:

    Exception in thread "main" jxl.read.biff.BiffException: Unable to recognize OLE stream
    at jxl.read.biff.CompoundFile.<init>(CompoundFile.java:116)
    at jxl.read.biff.File.<init>(File.java:127)
    at jxl.Workbook.getWorkbook(Workbook.java:221)
    at jxl.Workbook.getWorkbook(Workbook.java:198)
    at Excel.Main.<init>(Main.java:41)
    at Excel.Main.main(Main.java:29)

    Ich habe mal in die Klassen hineingeschaut, um zu schauen, was in den Zeilen 116, 127, etc. los ist. Erstaunlich war nur, dass die Klassen so viele Zeilen hatten

    Hat da jemand eine Idee, wo mein Fehler steckt?

    Grüße
    ZubSero

    P.S. Mein erster Post. Für Verbesserungen diesbezüglich bin ich auch offen .
     

  2. #2
    Avatar von sheel
    sheel sheel ist gerade online Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.503
    Hi und Willkommen bei tutorials.de

    Zitat Zitat von ZubSero Beitrag anzeigen
    P.S. Mein erster Post. Für Verbesserungen diesbezüglich bin ich auch offen
    Und zwar: Bitte den Javacode in Codetags setzen ([java]...[/java]).
    Dann wirds viel leichter lesbar.
    Einrückungen, Zeilennummerierung usw... ist dann alles da.

    Gruß
     
    Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
    Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
    "Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?

  3. #3
    genodeftest genodeftest ist offline Mitglied Brillant
    Registriert seit
    Jun 2009
    Beiträge
    870
    Hi und willkommen im Forum!

    zuerst mal: den Code bitte in Java-Tags schreiben (siehe meine Signatur), dann lässt er sich besser lesen. Für die Exception nimmt man dann den Code-Tag:

    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
    
    package Excel;
     
     import java.io.File;
     import java.io.IOException;
     import jxl.*;
     import jxl.read.biff.BiffException;
     import javax.swing.*;
     import java.awt.*;
     
     
     public class Main extends JFrame
     {
     private File myExcelFile;
     private Workbook myWorkbook;
     private Sheet mySheet;
     private String stringA1;
     private String stringB1;
     private String stringC1;
     private Cell a1; 
     private Cell b1;
     private Cell c1;
     private Container contPane;
     private JLabel labA1;
     private JLabel labB1;
     private JLabel labC1;
     
     public static void main(String[] args) throws IOException, BiffException
     {
     Main myMain = new Main();
     }
     
     public Main() throws IOException, BiffException
     {
     super();
     
     contPane = getContentPane();
     contPane.setLayout(new BoxLayout(contPane, BoxLayout.Y_AXIS));
     
     myExcelFile = new File("d:\\Testdatei.xlsx");
     
     myWorkbook = Workbook.getWorkbook(myExcelFile);
     
     mySheet = myWorkbook.getSheet(0);
     
     a1 = mySheet.getCell(0, 0);
     b1 = mySheet.getCell(1, 0);
     c1 = mySheet.getCell(2, 0);
     
     stringA1 = a1.getContents();
     stringB1 = a1.getContents();
     stringC1 = a1.getContents();
     
     labA1 = new JLabel(stringA1);
     labB1 = new JLabel(stringB1);
     labC1 = new JLabel(stringC1);
     
     contPane.add(labA1);
     contPane.add(labB1);
     contPane.add(labC1);
     
     this.pack();
     this.setVisible(true);
     }
     }
    (mit Einrückungen wäre das natürlich noch besser

    die Exception:
    Code :
    1
    2
    3
    4
    5
    6
    7
    
    Exception in thread "main" jxl.read.biff.BiffException: Unable to recognize OLE stream
     at jxl.read.biff.CompoundFile.<init>(CompoundFile.java:116)
     at jxl.read.biff.File.<init>(File.java:127)
     at jxl.Workbook.getWorkbook(Workbook.java:221)
     at jxl.Workbook.getWorkbook(Workbook.java:198)
     at Excel.Main.<init>(Main.java:41)
     at Excel.Main.main(Main.java:29)

    kleine Anmerkung gleich mal: Pakete (in deinem Fall Excel) schreibt man klein, damit man sie von Klassennamen unterscheiden kann.

    Der Fehler tritt dort auf, wo du die Datei lädtst.
    Existiert die Datei D:\Testdatei.xlsx ? Wenn nein, musst du sie wahrscheinlich erst mit der jexcelapi erzeugen!
    Wenn die Datei existiert, ist sie entweder defekt (mit MS Office und anderen Programmen prüfen) oder in einer Version, die jexcelapi nicht unterstützt.

    Wenn du auf die Seiten von JExcelAPI ( http://jexcelapi.sourceforge.net/ , http://www.andykhan.com/jexcelapi/ ) schaust, steht dort, dass Excel 97, 2000, XP, 2003 unterstützt wird. Die Endung xslx ist aber die Endung von Excel 2007/2010, das ist inkompatibel mit vorherigen Versionen! Du solltest entweder mit alten Excel-Dateien arbeiten oder dir eine andere API suchen.
     
    Code bitte so einfügen: [java]System.out.println("Hallo");[/java] (Analog für andere Programmiersprachen)
    Code java:
    1
    
    System.out.println("Hallo");
    hilfreich zu Java: Really Big Index, Java ist auch eine Insel Band 1 und Band 2.
    ___________
    Ubuntu Bug #1: Microsoft has a majority market share
    Casecon: Projekt leiser Käse

  4. #4
    ZubSero ZubSero ist offline Grünschnabel
    Registriert seit
    Sep 2011
    Beiträge
    2
    @sheel: Alles klar, danke für den Tipp.

    Ich habe selbst nochmal bissl herumprobiert.

    Er hat ein Problem, eine xlsx datei zu öffnen. Wenn ich nämlich mein Beispiel mit einer xls Datei ausführe, funktioniert alles einwandfrei .

    Ist die jecelapi noch nicht für Excel 2010 ausgereift oder habe ich doch noch irgendeinen Fehler?
     

  5. #5
    Avatar von sheel
    sheel sheel ist gerade online Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.503
    Schau doch nach:
    http://jexcelapi.sourceforge.net/
    Some Features, erste Zeile.

    Bei 2003 ist Schluss. Kein xlsx.

    Da zwischen den Dateiformaten sehr große Unterschiede sind macht es wahrscheinlich nicht viel Sinn, das da noch reinzustopfen, sondern besser gleich ein neues Projekt daraus machen...
     
    Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
    Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
    "Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?

Ähnliche Themen

  1. Fehler beim Auslesen der Datenbank
    Von Henig im Forum PHP
    Antworten: 2
    Letzter Beitrag: 10.02.10, 12:34
  2. Fehler beim Auslesen der CListCtrl
    Von Ravebaby im Forum VisualStudio & MFC
    Antworten: 3
    Letzter Beitrag: 14.05.05, 22:15
  3. Fehler beim Auslesen der Datenbank
    Von Slater im Forum .NET Archiv
    Antworten: 2
    Letzter Beitrag: 16.02.05, 18:54
  4. Fehler beim beim Auslesen der DB
    Von Slater im Forum .NET Archiv
    Antworten: 5
    Letzter Beitrag: 28.01.05, 15:22
  5. Fehler beim Auslesen einer Exceldatei
    Von TOLIK im Forum .NET Archiv
    Antworten: 0
    Letzter Beitrag: 18.10.04, 12:04