โครงการ POI ของ Apache สามารถใช้ในการประมวลผลเอกสาร MS Office และยังมีรุ่น. NET ของ CodePlex โครงการ POI สามารถสร้างและบำรุงรักษา Java API ต่างๆตามรูปแบบไฟล์ OOXML และ OLE2 สำนักงาน MS ส่วนใหญ่อยู่ในรูปแบบ OLE2 POI สนับสนุน Outlook ผ่านโครงการย่อย HSMF สนับสนุน Visio ผ่านโครงการย่อย HDGF และสนับสนุนผู้เผยแพร่ผ่านโครงการย่อย HPBF
ตัวอย่างง่ายๆของการใช้ POI เพื่อแยกคำ:
เราจำเป็นต้องแนะนำสองแพ็คเกจ: poi-3.7.jat และ poi-scratchpad-3.7.ajr
การคัดลอกรหัสมีดังนี้:
แพ็คเกจ msoffice;
นำเข้า Java.io.File;
นำเข้า Java.io.FileInputStream;
นำเข้า java.io.ioException;
นำเข้า Java.io.InputStream;
นำเข้า org.apache.poi.hwpf.hwpfdocument;
นำเข้า org.apache.poi.hwpf.extractor.wordextractor;
นำเข้า org.apache.poi.hwpf.usermodel.characterrun;
นำเข้า org.apache.poi.hwpf.usermodel.paragraph;
นำเข้า org.apache.poi.hwpf.usermodel.Range;
นำเข้า org.apache.poi.hwpf.usermodel.section;
คำชั้นเรียนสาธารณะ {
// แยกเนื้อหาทั้งหมดโดยตรง
สตริงคงที่สาธารณะ readDoc1 (อินพุต IS) พ่น IOException {
WordExtractor Extractor = new wordExtractor (IS);
return extractor.getText ();
-
// แยกตามส่วนส่วนย่อหน้าย่อ
โมฆะคงที่สาธารณะ readDoc2 (อินพุตสตรีม) พ่น IOException {
hwpfdocument doc = new hwpfdocument (IS);
ช่วง r = doc.getRange ();
สำหรับ (int x = 0; x <r.numsections (); x ++) {
ส่วน S = r.getSection (x);
สำหรับ (int y = 0; y <s.numparagraphs (); y ++) {
ย่อหน้า p = s.getParagraph (y);
สำหรับ (int z = 0; z <p.numcharacterruns (); z ++) {
ตัวละคร run = p.getcharacterrun (z);
ข้อความสตริง = run.text ();
System.out.print (ข้อความ);
-
-
-
-
โมฆะคงที่สาธารณะหลัก (สตริง [] args) {
ไฟล์ไฟล์ = ไฟล์ใหม่ ("/home/orisun/1.doc");
พยายาม {
FileInputStream FIN = ใหม่ FileInputStream (ไฟล์);
สตริง cont = readDoc1 (ครีบ);
System.out.println (ต่อ);
fin.close ();
FIN = ใหม่ FileInputStream (ไฟล์);
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;
นำเข้า org.apache.poi.hslf.model.slide;
นำเข้า org.apache.poi.hslf.model.textrun;
นำเข้า org.apache.poi.hslf.usermodel.slideshow;
ชั้นเรียนสาธารณะ ppt {
// สกัดเนื้อหาทั้งหมดของสไลด์โดยตรงโดยตรง
สตริงคงที่สาธารณะ readDoc1 (อินพุต IS) พ่น IOException {
PowerPointExtractor Extractor = ใหม่ PowerPointExtractor (IS);
return extractor.getText ();
-
// อ่านหนึ่งสไลด์หนึ่งสไลด์หนึ่งสไลด์
โมฆะคงที่สาธารณะ readDoc2 (อินพุตสตรีม) พ่น IOException {
สไลด์โชว์ SS = สไลด์โชว์ใหม่ (ใหม่ HSLFSLIDESHOW (IS));
สไลด์ [] สไลด์ = ss.getSlides ();
สำหรับ (int i = 0; i <slides.length; i ++) {
// อ่านชื่อของสไลด์
String title = slides [i] .getTitle ();
System.out.println ("Title:"+title);
// อ่านเนื้อหาของสไลด์ (รวมถึงชื่อ)
textrun [] runs = slides [i] .gettextruns ();
สำหรับ (int j = 0; j <runs.length; j ++) {
System.out.println (รัน [j] .getText ());
-
-
-
โมฆะคงที่สาธารณะหลัก (สตริง [] args) {
ไฟล์ไฟล์ = ไฟล์ใหม่ ("/home/orisun/2.ppt");
พยายาม{
FileInputStream FIN = ใหม่ FileInputStream (ไฟล์);
สตริง cont = readDoc1 (ครีบ);
System.out.println (ต่อ);
fin.close ();
FIN = ใหม่ FileInputStream (ไฟล์);
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;
นำเข้า org.apache.poi.hssf.usermodel.hssfrow;
นำเข้า org.apache.poi.hssf.usermodel.hssfsheet;
นำเข้า org.apache.poi.hssf.usermodel.hssfworkbook;
นำเข้า org.apache.poi.hssf.extractor.excelextractor;
นำเข้า org.apache.poi.poifs.filesystem.poifsfilesystem;
นำเข้า org.apache.poi.ss.usermodel.row;
ชั้นเรียนสาธารณะ Excel {
// อ่านเนื้อหาทั้งหมดของ Excel โดยตรง
สตริงคงที่สาธารณะ readDoc1 (อินพุต IS) พ่น IOException {
hssfworkbook wb = hssfworkbook ใหม่ (poifsfilesystem ใหม่ (IS));
Excelextractor Extractor = New Excelextractor (WB);
Extractor.setFormulasnotResults (เท็จ);
extractor.setincludesheetNames (จริง);
return extractor.getText ();
-
// ปรับแต่งเป็นแผ่นแถวหรือแม้แต่เซลล์เมื่ออ่าน
สาธารณะคงที่ double getavg (inputstream คือ) โยน ioexception {
hssfworkbook wb = hssfworkbook ใหม่ (poifsfilesystem ใหม่ (IS));
// รับแผ่นแรก
แผ่น HSSFSheet = wb.getSheetat (0);
โมเลกุลคู่ = 0.0;
ตัวหารสองตัว = 0.0;
// โอนแผ่นตามสาย
Iterator <Row> Riter = Sheet.Rowiterator ();
ในขณะที่ (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 ());
โมเลกุล+= double.parsedouble (cell2.toString (). trim ())*float.parsefloat (cell1.toString (). trim ());
-
ส่งคืนโมเลกุล/ส่วน;
-
โมฆะคงที่สาธารณะหลัก (สตริง [] args) {
ไฟล์ไฟล์ = ไฟล์ใหม่ ("/home/orisun/3.xls");
พยายาม{
FileInputStream FIN = ใหม่ FileInputStream (ไฟล์);
สตริง cont = readDoc1 (ครีบ);
System.out.println (ต่อ);
fin.close ();
FIN = ใหม่ FileInputStream (ไฟล์);
System.out.println ("คะแนนเฉลี่ยถ่วงน้ำหนัก" + getavg (FIN));
fin.close ();
} catch (ioexception e) {
E.PrintStackTrace ();
-
-
-