ERLEDIGT
NEIN
NEIN
ANTWORTEN
4
4
ZUGRIFFE
274
274
EMPFEHLEN
-
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
.
-
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, ...?
-
02.09.11 12:39 #3
- 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:
(mit Einrückungen wäre das natürlich noch besserCode 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); } }

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)
hilfreich zu Java: Really Big Index, Java ist auch eine Insel Band 1 und Band 2.Code java:1
System.out.println("Hallo");
___________
Ubuntu Bug #1: Microsoft has a majority market share
Casecon: Projekt leiser Käse
-
@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?
-
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
-
Fehler beim Auslesen der Datenbank
Von Henig im Forum PHPAntworten: 2Letzter Beitrag: 10.02.10, 12:34 -
Fehler beim Auslesen der CListCtrl
Von Ravebaby im Forum VisualStudio & MFCAntworten: 3Letzter Beitrag: 14.05.05, 22:15 -
Fehler beim Auslesen der Datenbank
Von Slater im Forum .NET ArchivAntworten: 2Letzter Beitrag: 16.02.05, 18:54 -
Fehler beim beim Auslesen der DB
Von Slater im Forum .NET ArchivAntworten: 5Letzter Beitrag: 28.01.05, 15:22 -
Fehler beim Auslesen einer Exceldatei
Von TOLIK im Forum .NET ArchivAntworten: 0Letzter Beitrag: 18.10.04, 12:04





Zitieren


Login





