POI auf eine Referenz (Datei/Internetseite) anwenden

youngster

Aktives Mitglied
Hallo,
ich möchte eine ppt Datei lesen. Das POI Konzept habe ich verstanden, was ich jedoch noch nicht 'durchdrungen' 🙂bahnhof🙂 habe ist, wie kann ich meinen Code auf eine Referenz (jetzt eine Datei, später eine Internetseite) anwenden. Soweit habe:

Java:
public class PPTTest {
	    public static void main (String[] args) throws Exception {
	        if (args.length == 0) {
	            System.out.println("usage is: java PPTTest <PPT file>");
	            System.exit(0);
	        }
	        InputStream fis = new FileInputStream(args[0]);
	        POIFSFileSystem fs = new POIFSFileSystem(fis);
	        HSLFSlideShow show = new HSLFSlideShow(fs);
	        // slide
	        SlideShow ss = new SlideShow(show);
	        Slide[] slides = ss.getSlides();
	        System.out.println("slide 1: " + slides[0].getTitle());
            // text runs
            TextRun[] runs = slides[0].getTextRuns();
                TextRun run = runs[0];
                if (run.getRunType() == TextHeaderAtom.TITLE_TYPE) {
                    System.out.println("slide title 1: " + run.getText());
                } else {
                    System.out.println("slide text run 1: " + run.getRunType()+" : "+run.getText());
                }
	    	}
	}

Besten Danke für die geduldige Erklärung :toll:.
Youngster
 
Zuletzt bearbeitet von einem Moderator:
Sorry versteh die Frage nicht, was meinst du mit "Code auf eine Referenz (jetzt eine Datei, später eine Internetseite) anwenden."?
 
@HoaX: Ich möchte den Code auf eine Datei anwenden, wie kann ich die Datei definieren/aufrufen?

@Michael: Danke für den InputStream, aber wo und wie trage ich letztendlich meinen Pfad ein?

Danke, Gruss Youngster
 
Es funktioniert vielen, vielen Dank - aber noch zum Verständnis:
Ich habe zwei Varianten ausprobiert:
1. Variante (funktioniert nicht): Mit dem Eintrag in der ersten Zeile, wollte ich bei der IF Schleife ein False erzeugen, sodass er dann weiter macht:
Java:
args[0] = "I:/JavaProgram/test.ppt";
if (args.length == 0) {
   System.out.println("usage is: java PPTTest <PPT file>");
   System.exit(0);
   }
InputStream fis = new FileInputStream(args[0]);
POIFSFileSystem fs = new POIFSFileSystem(fis);
HSLFSlideShow show = new HSLFSlideShow(fs);
Ich bekomme jedoch eine Fehlermeldung: java.lang.ArrayIndexOutOfBoundsException
--> Was ist hier der Gedankenfehler ???:L

2. Variante (funktioniert): If Schleife löschen und dann lediglich:
Java:
InputStream fis = new FileInputStream("I:/JavaProgram/test.ppt");
 
Natürlich wirst du da eine Exception bekommen. args ist scheinbar leer, aber du versuchst das 1te Element zu erzeugen. Der Aufbau macht auch so nicht viel Sinn, denn der Main werden Parameter übergeben, die beim Auführen übergeben wurden sind. Diese zu ändern macht eben kein Sinn.
Hast du es denn selber so gestartet, wie du es verlangst? (java PPTTest path/to/some/file)
 
Ja, das Programm habe ich dann so gestartet und gibt die Inhalte aus, die ich aus der ppt extrahieren wollte. Das mit der Übergabe hat mir geholfen.
 
Ich weiß nicht... wenn man nicht mal mit Arrays umgehen kann, sollte man dann schon wirklich so komplexe Dateiformate wie Office Dokumente auslesen versuchen?
 

Neue Themen


Zurück
Oben