首頁>技術>

Java檔案讀寫的常用技術——專案開發實戰篇

一、 概述:

本文主要以Office辦公軟體和PDF檔案的讀寫為主線逐步展開說明,分析將相關格式的檔案內容文字化的過程。另外針對於Excel檔案內容的結構化和物件化進行實際案例分析,給出更適應Spring框架配置的解決方案。

二、 POI基本介紹:

1、 POI基本描述:

POI是用編寫的免費開源且跨平臺的Java API,Apache POI提供API給Java程式對格式檔案讀和寫的功能。POI為"Poor Obfuscation Implementation"的首字母縮寫,直譯為"可憐的模糊實現",或意為"簡潔版的模糊實現"。

.NET的開發人員則可以利用NPOI(POI for .NET)來存取Microsoft Office文件的功能。

2、 POI需要的Jar包:

a) poi-3.10-Final.jar(用於xls);

b) poi-ooxml-3.10-Final.jar(用於xlsx);

c) poi-ooxml-schemas-3.10.jar;

d) xmlbeans-2.6.0.jar

e) dom4j-1.6.1.jar

f) poi-scratchpad-3.10-FINAL-20140208.jar(用於word,ppt)

3、 POI結構說明(包名稱說明):

a) HSSF:提供讀寫Microsoft Excel XLS格式檔案的功能;

b) XSSF:提供讀寫Microsoft Excel OOXML XLSX格式檔案的功能;

c) HWPF:提供讀寫Microsoft Word DOC格式檔案的功能;

d) HSLF:提供讀寫Microsoft PowerPoint格式檔案的功能;

e) HDGF:提供讀Microsoft Visio格式檔案的功能;

f) HPBF:提供讀Microsoft Publisher格式檔案的功能;

g) HSMF:提供讀Microsoft Outlook格式檔案的功能;

三、 PDF基本介紹:

1、 摘要:

自從Adobe公司1993年第一次釋出公共PDF參考以來,支援各種語言和平臺的PDF工具和類庫就如雨後春筍般湧現。然而,Java應用開發中Adobe技術的支援相對滯後了。

自從Adobe公司1993年第一次釋出公共PDF參考以來,支援各種語言和平臺的PDF工具和類庫就如雨後春筍般湧現。然而,Java應用開發中Adobe技術的支援相對滯後了。這是個奇怪的現象,因為PDF文件是企業資訊系統儲存和交換資訊的大勢所趨,而Java技術特別適合這種應用。然而,Java開發人員似乎直到最近才獲得成熟可用的PDF支援。

2、 特性:

PDFBox(一個BSD許可下的原始碼開放專案)是一個為開發人員讀取和建立PDF文件而準備的純Java類庫。它提供如下特性:

a) 提取文字,包括Unicode字元;

b) 和Jakarta Lucene等文字搜尋引擎的整合過程十分簡單;

c) 加密/解密PDF文件;

d) 從PDF和XFDF格式中匯入匯出相關表單資料;

e) 向已有PDF文件中追加內容;

f) 將一個PDF文件切分為多個文件;

g) 覆蓋PDF文件;

3、 PDFBox API:

PDFBox設計時採用面向物件的方式來描述PDF文件。PDF文件的資料是一系列基本物件的集合:陣列,布林型,字典,數字,字串和二進位制流。PDFBox在org.pdfbox.cos包(COS模型)中定義這些基本物件型別。你可以使用這些物件與PDF文件進行任何互動,但你應該先對PDF文件內部結構以及高層概念作一些深入的了解。例如,頁面和字型都是帶有特殊屬性的字典物件;PDF參考手冊提供這些特殊屬性的含義和型別的說明,但這是一個枯燥的文件查閱過程。

於是,org.pdfbox.pdfmodel包(PD模型)應運而生,它的基礎是COS模型,但提供了以一種熟悉的方式訪問PDF文件物件的高層API。對底層COS模型進行了封裝的PDPage和PDFont等類就在這個包中。

注意:雖然PD模型提供了一些優秀的功能,但它依然是一個開發中的模型。在有些例項中,你可能需要藉助於COS模型才能訪問PDF的特定功能性。所有的PD模型物件都提供返回相應的COS模型物件的方法。所以,在一般情況下,你都會使用PD模型,但PD模型鞭長莫及時你可以直接操作底層的COS模型。

4、 PDF需要的Jar包:

a) pdfbox-1.7.1.jar;

b) fontbox-1.7.1.jar;

四、 各種檔案的處理方式:

1、 Excel檔案:

示例程式碼:

2、 Word檔案:

示例程式碼:

3、 PPT檔案:

示例程式碼:

4、 Visio檔案:

示例程式碼:

5、 Pdf檔案:

示例程式碼:

五、 案例分析講解:

1、 設計說明:

以Excel檔案的不同檔案格式讀寫為例進行分析。

a) 針對於檔案格式的設計:

i. XLS和XLSX:

雖然XLS是使用HSSFWorkbook,而XLSX是使用XSSFWorkbook,但針對於sheet的處理是一致的,因此使用同一個類進行處理。另外將針對於每行資料的處理單獨抽取為一個類,簡化程式碼邏輯,明確程式碼層次關係;

ii. CSV:

以純文字形式儲存表格資料的,因此單獨建立一個類進行處理。注意:將分隔符(預設是英文逗號)和資料起始行號單獨儲存單獨的私有成員變數中,以保證程式碼的通用性;

b) 針對於程式碼結構的設計:

使用介面將物件整合,以便在注入時可以使用同一個物件例項化。

2、 類圖:

3、 Spring配置:

4、 各個類的具體情況:

a) IParser:

b) ExcelParser:

c) CsvParser:

d) RowParser:

  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • android直播所用到的第三方類庫,歡迎大家收藏