Le projet POI d'Apache peut être utilisé pour traiter les documents de MS Office, et il y a aussi une version .NET sur CodePlex. Les projets POI peuvent créer et maintenir diverses API Java basées sur les formats de fichiers OOXML et OLE2. La plupart des bureaux MS sont au format OLE2. POI prend en charge Outlook via le sous-projection HSMF, prend en charge VISIO via le sous-projet HDGF et prend en charge l'éditeur via le sous-projection HPBF.
Exemple simple d'utilisation de POI pour extraire le mot:
Nous devons introduire les deux packages: poi-3.7.jat et poi-scratchpad-3.7.ajr.
La copie de code est la suivante:
Package MSOffice;
Importer java.io.file;
import java.io.fileInputStream;
Importer java.io.ioException;
import java.io.inputStream;
import org.apache.poi.hwpf.hwpfDocument;
import org.apache.poi.hwpf.extractor.wordExtractor;
import org.apache.poi.hwpf.usermodel.characterrun;
import org.apache.poi.hwpf.usermodel.Paragraph;
import org.apache.poi.hwpf.usermodel.range;
import org.apache.poi.hwpf.usermodel.section;
Mot de classe publique {
// extraire directement tout le contenu
Public Static String ReadDoc1 (InputStream IS) lance ioException {
WordExtractor Extracteur = new WordExtractor (IS);
return extracteur.getText ();
}
// Extrait par section section, paragraphe paragraphe, chaîne de caractères
public static void ReadDoc2 (InputStream IS) lance ioException {
HwpfDocument doc = new HWPFDocument (IS);
Plage r = doc.getRange ();
pour (int x = 0; x <r.numSection (); x ++) {
SECTION S = R.EGTSECTION (X);
pour (int y = 0; y <s.Numparagraphs (); y ++) {
Paragraphe p = s.getParagraph (y);
pour (int z = 0; z <p.NumCharacterruns (); z ++) {
Caractères run = p.getCharacterrun (z);
String text = run.text ();
System.out.print (texte);
}
}
}
}
public static void main (String [] args) {
Fichier fichier = nouveau fichier ("/ home / orisun / 1.doc");
essayer {
FileInputStream fin = new FileInputStream (fichier);
String cont = readDoc1 (fin);
System.out.println (suite);
fin.close ();
fin = new FileInputStream (fichier);
readdoc2 (fin);
fin.close ();
} catch (ioexception e) {
e.printStackTrace ();
}
}
}
Exemple d'extraction POI PPT:
La copie de code est la suivante:
Package MSOffice;
Importer java.io.file;
import java.io.fileInputStream;
Importer java.io.ioException;
import java.io.inputStream;
import org.apache.poi.hslf.hslfslideshow;
import org.apache.poi.hslf.extractor.PowerPointExtractor;
import org.apache.poi.hslf.model.slide;
import org.apache.poi.hslf.model.textrun;
import org.apache.poi.hslf.usermodel.slideshow;
classe publique ppt {
// extraire directement tous les contenus de la diapositive
Public Static String ReadDoc1 (InputStream IS) lance ioException {
PowerPointExtractor Extracteur = nouveau PowerPointExtractor (IS);
return extracteur.getText ();
}
// Lire une diapositive une diapositive une diapositive
public static void ReadDoc2 (InputStream IS) lance ioException {
Diaporama ss = nouveau diaporama (nouveau hSLFSlideShow (IS));
Slide [] Slides = ss.getsLides ();
for (int i = 0; i <Slides.length; i ++) {
// Lire le titre d'une diapositive
String title = Slides [i] .getTitle ();
System.out.println ("Title:" + Title);
// Lire le contenu d'une diapositive (y compris le titre)
Textrun [] runs = diapositives [i] .gettextruns ();
pour (int j = 0; j <runs.length; j ++) {
System.out.println (runs [j] .getText ());
}
}
}
public static void main (String [] args) {
Fichier file = nouveau fichier ("/ home / orisun / 2.ppt");
essayer{
FileInputStream fin = new FileInputStream (fichier);
String cont = readDoc1 (fin);
System.out.println (suite);
fin.close ();
fin = new FileInputStream (fichier);
readdoc2 (fin);
fin.close ();
} catch (ioexception e) {
e.printStackTrace ();
}
}
}
Les fichiers Excel sont composés de plusieurs classeurs et un classeur se compose de plusieurs feuilles.
Exemple simple d'extraction de POI Excel:
La copie de code est la suivante:
Package MSOffice;
Importer java.io.file;
import java.io.fileInputStream;
Importer java.io.ioException;
import java.io.inputStream;
Importer java.util.iterator;
import org.apache.poi.hssf.usermodel.hssfcell;
import org.apache.poi.hssf.usermodel.hssfrow;
import org.apache.poi.hssf.usermodel.hssfsheet;
import org.apache.poi.hssf.usermodel.hssfworkbook;
import org.apache.poi.hssf.extractor.ExcelExtractor;
import org.apache.poi.poifs.filesystem.poifsfilesystem;
import org.apache.poi.ss.usermodel.row;
classe publique Excel {
// Lisez directement tous les contenus d'Excel
Public Static String ReadDoc1 (InputStream IS) lance ioException {
Hssfworkbook wb = new hssfworkbook (new PoifsFileSystem (IS));
Excextractor Extracteur = Nouveau Excextractor (WB);
extracteur.setFormulasNotResults (false);
Extracteur.SetincludeSheetNames (true);
return extracteur.getText ();
}
// Affinez les cellules en feuille, en rangs ou même en lisant
public static double getavg (inputStream is) lève ioException {
Hssfworkbook wb = new hssfworkbook (new PoifsFileSystem (IS));
// Obtenez la première feuille
Hssfsheet sheet = wb.getSheetAt (0);
double molécule = 0,0;
Double dénominateur = 0,0;
// Fiche de transfert par ligne
Iterator <row> riter = sheet.rowiterator ();
while (riter.hasnext ()) {
Hssfrow row = (hssfrow) riter.next ();
HSSFCELL CELL1 = ROW.GetCell (4);
HSSFCELL CELLE2 = ROW.GetCell (4);
if (cell1.getCellType ()! = hssfcell.cell_type_numeric) {
System.err.println ("Erreur de type de nombre!");
System.exit (-2);
}
if (Cell2.getCellType ()! = hssfcell.cell_type_numeric) {
System.err.println ("Erreur de type de nombre!");
System.exit (-2);
}
dénominateur + = double.parsedouble (cell2.toString (). Trim ());
molécule + = double.parsedouble (cell2.toString (). Trim ()) * float.parsefloat (cell1.toString (). Trim ());
}
molécule de retour / dénominateur;
}
public static void main (String [] args) {
Fichier file = nouveau fichier ("/ home / orisun / 3.xls");
essayer{
FileInputStream fin = new FileInputStream (fichier);
String cont = readDoc1 (fin);
System.out.println (suite);
fin.close ();
fin = new FileInputStream (fichier);
System.out.println ("Score moyen pondéré" + GetAVG (FIN));
fin.close ();
} catch (ioexception e) {
e.printStackTrace ();
}
}
}