首頁 > 軟體

Apache POI操作Word概覽

2020-06-16 16:46:15

1概覽

1.1 類包概覽

  HWPF      à    Microsoft Word 97(-2007)  --.doc

  XWPF        à    Microsoft Word 2007        --.docx

HWPF和XWPF提供了相同的功能,但兩者之間沒有共同的方法。

Package

Content

org.apache.poi.hdf

遺留程式碼;Internal程式碼,不能直接使用

org.apache.poi.hwpf.model

遺留程式碼重構後的程式碼;Internal程式碼,不能直接使用

org.apache.poi.hwpf.usermodel

公共程式碼,主要的介面方法

org.apache.poi.hwpf.extractor

抽取(讀取)Word內容資訊

org.apache.poi.hwpf.converter

Word-to-HTML, Word-to-FO(使用Apache FOP轉換為PDF)

org.apache.poi.hwpf.dev

開發者使用

HWPF入口類是HWPFDocument,當前(3.10)版本中參考了org.apache.poi.hwpf.modelorg.apache.poi.hwpf.usermodel包中的介面,後期版本中可能會不同的介面。

XWPF入口類是XWPFDocument,從這個類中可以獲取段落、圖片、表格、標題等資訊。

下載包中的範例比較少,分別在examples下的HWPFXWPF中;另外,可以從SVN上獲取部分測試範例程式碼(HWPFXWPF)。

1.2    HWPF簡述

基礎資訊讀取      使用org.apache.poi.hwpf.extractor.WordExtractor類,其接受input Stream或者HWPFDocument作為範例化引數,使用getText()方法獲取全部paragraphs,或者使用getParagraphText()獲取每個paragraph中的文字資訊

特定資訊讀取      為獲取特定的文字或元素,首先需要建立org.apahce.poi.hwpf.HWPFDocument範例,通過getRange()方法獲取所有range,然後從中獲取所有paragraphs,以及更小的元素資訊。

 頁首頁尾資訊      獲取文件的頁首頁尾資訊,首先需要建立org.apahce.poi.hwpf.HWPFDocument範例,然後建立org.apache.poi.hwpf.usermodel.HeaderStores範例,並將HWPFDocument範例作為引數傳入。通過HeaderStores範例可以獲取頁首、頁尾、首頁、奇數頁、偶數頁等資訊。另外,HeaderStores可以移除頁首頁尾中的宏命令。

修改文字資訊      使用(RangeParagraphCharacterRun中的)insertBefore()insertAfter()方法可以修改相應文字資訊。

其他一些測試範例,見SVN

1.3    XWPF簡述

基礎資訊讀取      通過org.apache.poi.xwpf.extractor.XWPFWordExtractor進行基礎資訊讀取,其接受input steam或XWPFDocument作為範例化引數。呼叫其getText()方法可以獲取所有paragraphs、tables以及headers等中的資訊。

特定資訊讀取      為獲取特定文字或元素,首先需要建立org.apache.poi.xwpf.XWPFDocument範例,利用範例選擇感興趣的IBodyElement要素(Table, Paragraph等),然後獲得一個XWPFRun,最後從XWPFRun中獲取文字或屬性資訊。

頁首頁尾資訊      獲取文件的頁首頁尾資訊,首先需要建立org.apache.poi.xwpf.XWPFDocument範例,然後建立org.apache.poi.xwpf.usermodel.XWPFHeaderFooter範例,並將HWPFDocument範例作為引數傳入。通過XWPFHeaderFooter範例可以獲取頁首、頁尾、首頁、奇數頁、偶數頁等資訊。

修改文字資訊      XWPFParagraph中,可以獲取組成文字資訊的XWPFRun要素。如果要新增新文字,呼叫createRun()方法或者文字末端新增一個XWPFRun要素,insertNewRun(int)可以paragraph的指定位置新增一個XWPFRun要素。一旦有了XWPFRun,可以呼叫其setText(String)方法修改文字內容,如果想增加一個空白要素,如tabs或則line breaks,需要呼叫addTab()addCarriageReturn()方法。

其他一些測試範例,見SVN


IT145.com E-mail:sddin#qq.com