Проект POI Apache может использоваться для обработки офисных документов MS, а также есть версия .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;
Import 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;
Общедоступное слово {
// напрямую извлекать все контент
public Static String ReadDoc1 (InputStream IS) бросает ioException {
WordExtractor Extractor = новый WordExtractor (IS);
return Extractor.getText ();
}
// Извлечение по разделу раздела, абзац абзац, строковый характер
public static void readdoc2 (inputstream is) бросает 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 ++) {
Harectrun run = p.getcharacterrun (z);
String text = run.text ();
System.out.print (текст);
}
}
}
}
public static void main (string [] args) {
File file = new File ("/home/orisun/1.doc");
пытаться {
FileInputStream fin = new FileInputStream (file);
String cont = readdoc1 (fin);
System.out.println (продолжение);
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;
Импорт org.apache.poi.hslf.model.slide;
Импорт org.apache.poi.hslf.model.textrun;
Импорт org.apache.poi.hslf.usermodel.slideshow;
открытый класс ppt {
// напрямую извлекать все содержимое слайда
public Static String ReadDoc1 (InputStream IS) бросает ioException {
PowerPointextractor Extractor = новый PowerPointextractor (IS);
return Extractor.getText ();
}
// Прочитайте один слайд один слайд один слайд
public static void readdoc2 (inputstream is) бросает ioException {
SlideShow SS = New SlideShow (New HSLFSLIDESHOW (IS));
Slide [] Slides = ss.getslides ();
для (int i = 0; i <slides.length; i ++) {
// Читать название слайда
String title = slides [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);
String cont = readdoc1 (fin);
System.out.println (продолжение);
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;
Import org.apache.poi.hssf.usermodel.hssfsheet;
Import org.apache.poi.hssf.usermodel.hssfworkbook;
Import org.apache.poi.hssf.extractor.excelextractor;
Импорт org.apache.poi.poifs.filesystem.poifsfilesystem;
Импорт org.apache.poi.ss.usermodel.row;
открытый класс Excel {
// Читать все содержимое Excel напрямую
public Static String ReadDoc1 (InputStream IS) бросает ioException {
HSSFWorkBook WB = новый HSSFWorkBook (New PoifsFilesyStem (IS));
ExcelexTractor Extractor = новый ExcelexTractor (WB);
Extractor.SetFormulAsNotresults (false);
extractor.setincludeSheetNames (true);
return Extractor.getText ();
}
// Уточнение к листу, ряду или даже ячейкам при чтении
Общественный статический двойной getavg (inputstream is) бросает ioException {
HSSFWorkBook WB = новый HSSFWorkBook (New PoifsFilesyStem (IS));
// Получить первый лист
HSSFSHEET SHILE = WB.GETSHEETAT (0);
двойная молекула = 0,0;
двойной знаменатель = 0,0;
// Передача листа по линии
Итератор <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 ());
молекула+= 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);
String cont = readdoc1 (fin);
System.out.println (продолжение);
fin.close ();
fin = new FileInputStream (file);
System.out.println («средний балл» + getavg (fin));
fin.close ();
} catch (ioException e) {
e.printstacktrace ();
}
}
}