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:
- 新方法新程式碼!Java版Aspose.Words引入新選項實現查詢和替換文字
- GUITest:用於全自動 GUI 魯棒性測試的 Java 庫
- 微軟Office ios 2.34版本正式上線,功能強悍,免費下載!
- 微軟的多合一辦公軟體 Office App,也正式向蘋果 iOS 開放了
- Microsoft Office安卓版正式上線,word、Excel、PPT全都有
- 微軟正式釋出三合一的 Android Office App
- 微軟為網頁端Outlook開發Spaces功能 整合會議和文件以及郵件功能
- Win10 出包!微軟坦言:未完全解決,少數人得這樣「手動」修正
- OneNote桌面商店合併:這意味著什麼?