ApacheのPOIプロジェクトは、MSオフィスドキュメントの処理に使用できます。また、CodePlexには.NETバージョンもあります。 POIプロジェクトは、OOXMLおよびOLE2ファイル形式に基づいて、さまざまなJava APIを作成および維持できます。ほとんどのMSオフィスはOLE2形式です。 POIは、HSMFサブプロジェクトを通じてOutlookをサポートし、HDGFサブプロジェクトを介してVisioをサポートし、HPBFサブプロジェクトを介してパブリッシャーをサポートします。
POIを使用して単語を抽出する簡単な例:
2つのパッケージを紹介する必要があります:POI-3.7.JATとPOI-SCRATCHPAD-3.7.AJR。
コードコピーは次のとおりです。
パッケージmsoffice;
java.io.fileをインポートします。
java.io.fileinputStreamをインポートします。
java.io.ioexceptionをインポートします。
java.io.inputStreamをインポートします。
Import org.apache.poi.hwpf.hwpfdocument;
org.apache.poi.hwpf.extractor.wordextractorをインポートします。
org.apache.poi.hwpf.usermodel.characterrunをインポートします。
org.apache.poi.hwpf.usermodel.paragraphをインポートします。
Import org.apache.poi.hwpf.usermodel.range;
org.apache.poi.hwpf.usermodel.sectionをインポートします。
パブリッククラスワード{
//すべてのコンテンツを直接抽出します
public static string readdoc1(inputstream is)はioexceptionをスローします{
wordextractor抽出器= new wordextractor(is);
return extractor.getText();
}
//セクションごとに抽出、パラグラフ段落、文字列charplearrun
public static void readdoc2(inputstream is)throws ioexception {
hwpfdocument doc = new hwpfdocument(is);
範囲r = doc.getrange();
for(int x = 0; x <r.numsections(); x ++){
セクションS = R.GetSection(x);
for(int y = 0; y <s.numparagraphs(); y ++){
パラグラフp = s.getparagraph(y);
for(int z = 0; z <p.numcharacterruns(); z ++){
charplerun run = p.getCharacterrun(z);
string text = run.text();
System.out.print(text);
}
}
}
}
public static void main(string [] args){
file file = new file( "/home/orisun/1.doc");
試す {
fileInputStream fin = new FileInputStream(file);
文字列cont = readdoc1(fin);
System.out.println(cont);
fin.close();
fin = new fileInputStream(file);
readdoc2(fin);
fin.close();
} catch(ioException e){
e.printstacktrace();
}
}
}
POI抽出の例ppt:
コードコピーは次のとおりです。
パッケージmsoffice;
java.io.fileをインポートします。
java.io.fileinputStreamをインポートします。
java.io.ioexceptionをインポートします。
java.io.inputStreamをインポートします。
org.apache.poi.hslf.hslfslideshowをインポートします。
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;
パブリッククラスPPT {
//スライドのすべての内容を直接抽出します
public static string readdoc1(inputstream is)はioexceptionをスローします{
PowerPointExtractor Extractor = new PowerPointExtractor(IS);
return extractor.getText();
}
// 1つのスライド1つのスライド1つのスライドを読みます
public static void readdoc2(inputstream is)throws ioexception {
Slideshow SS = new Slideshow(new hslfslideshow(is));
スライド[]スライド= ss.getSlides();
for(int i = 0; i <slides.length; i ++){
//スライドのタイトルを読みます
文字列タイトル=スライド[i] .getTitle();
System.out.println( "title:"+title);
//スライドのコンテンツを読む(タイトルを含む)
textrun [] runs = slides [i] .getTextruns();
for(int j = 0; j <runs.length; j ++){
system.out.println(runs [j] .getText());
}
}
}
public static void main(string [] args){
file file = new file( "/home/orisun/2.ppt");
試す{
fileInputStream fin = new FileInputStream(file);
文字列cont = readdoc1(fin);
System.out.println(cont);
fin.close();
fin = new fileInputStream(file);
readdoc2(fin);
fin.close();
} catch(ioException e){
e.printstacktrace();
}
}
}
Excelファイルは複数のワークブックで構成されており、ワークブックは複数のシートで構成されています。
POI抽出の簡単な例Excel:
コードコピーは次のとおりです。
パッケージmsoffice;
java.io.fileをインポートします。
java.io.fileinputStreamをインポートします。
java.io.ioexceptionをインポートします。
java.io.inputStreamをインポートします。
java.util.iteratorをインポートします。
org.apache.poi.hssf.usermodel.hssfcellをインポートします。
Import org.apache.poi.hssf.usermodel.hssfrow;
org.apache.poi.hssf.usermodel.hssfsheetをインポートします。
org.apache.poi.hssf.usermodel.hssfworkbookをインポートします。
org.apache.poi.hssf.extractor.excelextractorをインポートします。
import org.apache.poi.poifs.filesystem.poifsfilesystem;
org.apache.poi.ss.s.usermodel.rowをインポートします。
パブリッククラスExcel {
// Excelのすべての内容を直接読み取ります
public static string readdoc1(inputstream is)はioexceptionをスローします{
hssfworkbook wb = new hssfworkbook(new poifsfilesystem(is));
ExceLextractor Extractor = new ExceLextractor(WB);
Extractor.setformulasnotResults(false);
extractor.setincludesheetNames(true);
return extractor.getText();
}
//読書時にシート、行、またはセルを調整します
public static double getavg(inputstream is)throws ioexception {
hssfworkbook wb = new hssfworkbook(new poifsfilesystem(is));
//最初のシートを取得します
hssfsheet sheet = wb.getsheetat(0);
二重分子= 0.0;
二重分母= 0.0;
//ラインごとにシートを転送します
iterator <Row> riter = sheet.rowiterator();
while(riter.hasnext()){
hssfrow row =(hssfrow)riter.next();
hssfcell cell1 = row.getCell(4);
hssfcell cell2 = row.getCell(4);
if(cell1.getCellType()!= hssfcell.cell_type_numeric){
system.err.println( "番号タイプエラー!");
System.Exit(-2);
}
if(cell2.getCellType()!= hssfcell.cell_type_numeric){
system.err.println( "番号タイプエラー!");
System.Exit(-2);
}
分母+= double.parsedouble(cell2.tostring()。trim());
Molecule+= double.ParseDouble(cell2.toString()。trim())*float.parsefloat(cell1.tostring()。trim());
}
戻り分子/分母。
}
public static void main(string [] args){
file file = new file( "/home/orisun/3.xls");
試す{
fileInputStream fin = new FileInputStream(file);
文字列cont = readdoc1(fin);
System.out.println(cont);
fin.close();
fin = new fileInputStream(file);
System.out.println( "加重平均スコア" + getAvg(fin));
fin.close();
} catch(ioException e){
e.printstacktrace();
}
}
}