IT|軟體|POI Apache Microsoft Office 格式檔案讀和寫功能

怎麼會命名成 Poor Obfuscation Implementation

POI 套件從 2001 年就開始了初始專案,由於 MS 的封閉特性,Office 檔案格式並沒有開放,作者就戲稱這個檔案格式是非常難以被理解,很混亂的一種檔案,就用了 Poor Obfuscation 這兩個字,當然還是成功地被 reverse-engineered,成就了這個專案,除了 MS Office 軟體之外,我們現在也可以用程式產生 Office 檔案。
 
主要元件

Excel (XSSF=HSSF+XSSF)
HSSF, XSSF
Excel 分為兩種檔案格式,比較舊的是 HSSFWorkbook,檔案格式為 Excel 1997-2003 版的Excel,副檔名是 xls,XSSFWorkbook 是 Excel 2007-10 的版本,副檔名是 xlsx。
基本的階層概念為一個 xlsx 檔案 XSSFWorkbook,裡面有多個工作表 XSSFSheet,每一個 Sheet 下面有一個表格,裡面有多列資料 XSSFRow,每列資料中有多欄資料儲存格 XSSFCell。
 
階層關係
XSSFWorkbook -> XSSFSheet -> XSSFRow -> XSSFCell
 
物件與檔案格式對應關係
Word (HWPF+XWPF)
PowerPoint (HSLF+XSLF)
OpenXML4J (OOXML)
OLE2 Filesystem (POIFS): OLE 2 Compound Document format 的Java Implementation
OLE2 Document Props (HPSF): Open Packaging Conventions (OPC) 的 Java Implementation
Outlook (HSMF)
Visio (HDGF+XDGF)
TNEF (HMEF): Microsoft's TNEF (Transport Neutral Encoding Format),也就是 winmail.dat,用在 Outlook 跟 Exchange -Publisher (HPBF): Publisher file format
參考

Java Code Examples

IT|軟體|開發|Gradle 專案建置自動化工具

簡介

Gradle 簡單說就是 Java 世界的 Makefile,它可以幫忙打理那些在專案開發過程中的瑣事,舉凡編譯、測試、檢查程式碼、產生文件、清理或壓縮檔案、上傳、發佈、重新啟動伺服器到送出電子郵件,都可以利用 Gradle 撰寫的 Script 來自動完成作業。
 
 
Java 建構工具 Ant、Maven vs Gradle 比較

[Ant] 
Ant的主要優點在於對構建過程的控制上;Ant是第一個「現代」構建工具,在很多方面它有些像Make。2000年發佈,在很短時間內成為Java項目上最流行的構建工具。它的學習曲線很緩,因此不需要什麼特殊的準備就能上手。它基於過程式編程的 idea。在最初的版本之後,逐漸具備了支持插件的功能。
 
主要的不足是用XML作為腳本編寫格式。XML,本質上是層次化的,並不能很好地貼合 Ant 過程化編程的初衷。Ant的另外一個問題是,除非是很小的項目,否則它的 XML 文件很快就大得無法管理。後來,隨著通過網絡進行依賴管理成為必備功能,Ant 採用了Apache Ivy。
 
[Maven]
Maven 發佈於2004年。目的是解決碼使用 Ant 所帶來的一些問題。因為 Maven 主要聚焦於依賴管理,實際上用 Maven 很難寫出複雜、定制化的構建腳本,甚至不如 Ant。
 
Maven 的主要優點是生命週期。只要項目基於一定之規,它的整個生命週期都能夠輕鬆搞定,代價是犧牲了靈活性。
 
Maven 仍舊使用 XML 作為編寫構建配置的文件格式,但是,文件結構卻有巨大的變化。Ant 需要碼將執行 task 所需的全部命令都一一列出,然而 Maven 依靠約定(convention)並提供現成的可調用的目標(goal)。不僅如此,有可能最重要的一個補充是,Maven 具備從網絡上自動下載依賴的能力(Ant 後來通過 Ivy 也具備了這個功能),這一點革命性地改變了我們開發軟件的方式。
 
但是,Maven 也有它的問題。依賴管理不能很好地處理相同庫文件不同版本之間的衝突(Ivy 在這方面更好一些)。XML 作為配置文件的格式有嚴格的結構層次和標準,定制化目標(goal)很困難。
[Gradle]
Gradle 結合了前兩者的優點,在此基礎之上做了很多改進。它具有 Ant 的強大和靈活,又有 Maven 的生命週期管理且易於使用。最終結果就是一個工具在2012年華麗誕生並且很快地獲得了廣泛關注。例如,Google 採用 Gradle 作為 Android OS 的默認構建工具。
 
Gradle 不用 XML,它使用基於 Groovy 的專門的 DSL,從而使 Gradle 構建腳本變得比用 Ant 和 Maven 寫的要簡潔清晰。Gradle 樣板文件的代碼很少,這是因為它的 DSL 被設計用於解決特定的問題:貫穿軟件的生命週期,從編譯,到靜態檢查,到測試,直到打包和部署。
 
安裝及配置

 
將下載的檔案解壓縮到下面目錄(目錄名稱可自行帶換)
/Users/Kevin/Agile-MAC/Gradle
sudo nano /etc/.bashrc_profile
export
export GRADE_HOME=/Users/Kevin/Agile-MAC/Gradle/gradle-2.10
 
整合 Eclipse    2016年5月12日

開啟Eclipse專案選擇 Help -> Eclipse Marketplace..
搜尋條件選gradle按下 Install
重新啟動 eclipse
之後在目標專案上按右鍵選擇 Configure -> Conver to Gradle Project
接著在最外層的目錄下創造一個 build.gradle 的檔案
它的內容按照自己的需求來設定
 
[一個簡單的範例]
import org.gradle.plugins.ide.eclipse.model.Facet

apply plugin: 'java'
apply plugin: 'war'
apply plugin: 'eclipse-wtp'

sourceCompatibility = 1.7   // 設置 JDK 版本
webAppDirName = 'WebContent'    // 設置 WebApp 根目錄
sourceSets.main.java.srcDir 'src'   // 設置 Java 源碼所在目錄

// 設置 maven 庫地址
repositories {  
   mavenCentral()
}

// 設置依賴
dependencies {
   providedCompile 'javax.servlet:servlet-api:2.5' // 編譯期
   providedRuntime 'javax.servlet:jstl:1.2'    // 運行時
}
 
設定好了之後在專案上按右鍵,選擇 Gradle -> Refresh All
就會開始下載Lib, 等下載完就可以看到 Gradle Dependencies 內的檔案
 
完成!
 
資源

Spring 教學(1) – 從 Spring Boot 開始