十二月 192011
 

講到試算表,大家最熟悉的應該就是Microsoft Office Excel了吧!但其實大部分的人都只會基本的Excel操作及運算,Excel其實有很多非常強大的功能,這篇文章其實不是教大家怎麼使用Excel,小蛙也只會基本的操作,由於Excel所包含的強大功能,以致於現在有很多資料都是採用Excel儲存,像小蛙的其中一項工作就是把某些單位中的資料匯入到資料庫中,而某些單位提供給小蛙的資料就是Excel,小蛙要做的事情就是必須先從Excel中把資料截取出來,才能做後續的操作以利於塞入特定資料庫中。這篇文章要介紹怎麼使用Java讀取Excel內容。

要在Java中操作Excel必須先下載Java Excel API。這邊小蛙下載最新版的JExecelApi v2.6.12。

下載到桌面後,我們只需要壓縮檔中的jxl.jar檔案,可以透過WinRAR(WinZip or 7zip …等)解壓縮軟體取得jxl.jar。

解壓縮後可以得到jexcelapi,而我們要的jxl.jar在jexcelapi資料夾內。如果你的使用方式跟小蛙一樣,直接點兩下開啟WinRAR介面的話,就可以直接拖曳著jxl.jar到桌面,而不用解壓縮整個檔案。

接下來要把這個jar檔放進專案中讓我們可以透過Eclipse使用,之前小蛙會將所有使用到的Library都放置在一個資料夾,讓不同專案可以去include,但後來工讀生盛哥(組內最強)建議可以每個專案中都建立一個lib資料夾,裡面專門放置這個專案會用到的函式庫,雖然可能會造成空間浪費(同一個套件複製好幾份在不同專案中),但到時候要維護或是打包之類的會方便許多。下圖是在專案中建立一個Folder的操作,在專案上按右鍵->New->Folder。

輸入Folder名稱。

就會出現在Eclipse介面中的專案裡了。

光是這樣Eclipse還沒辦法使用這個Jar的功能喔!接著我們要讓Eclipse可以”認得”這個Jar。在剛剛的jar上面點選滑鼠右鍵,選擇Build Path -> Add to Build Path。

上圖的jxl.jar變成下圖這個樣子,並且在Referenced Libraries中出現了一個jxl.jar。

接下來介紹JXL的使用方法。

// 要注意如果檔案路徑中有「\」必須用「\\」或「/」取代掉
// 使用JXL必須先建立一個Workbook,讀取方法如下。
// 小蛙測試的時候 xlsx 的檔案會發生錯誤
Workbook workbook = Workbook.getWorkbook(new File("E:\\鄉鎮區中英文.xls"));

// 接著建立 Sheet,Workbook可以看成是一個excel檔案,Sheet顧名思義就是一個頁籤。
// 可以直接 getSheet(0) 表示第一個頁籤(從0開始算)
// 也可以透過 getSheet("頁籤名稱") 來取得頁籤
Sheet sheet = workbook.getSheet(0);

// 讀取儲存格(Cell)的方法,getCell(Columns, Rows),也是一樣從0開始(直,橫)
Cell c = sheet.getCell(j, i); 

// 要一列一列往下讀的方式,印出每一行的內容
for(int i = 0; i < sheet.getRows(); i++){
    for(int j = 0; j < sheet.getColumns(); j++){
        Cell c = sheet.getCell(j, i);
        String s = c.getContents();
        System.out.println(s);
    }
    System.out.println("-------");
}

這邊小蛙介紹一個Eclipse小技巧。把上面的程式貼在Eclipse裡面卻發現有紅色的底線,是Eclipse告訴開發者你這行程式有錯誤喔!並且提供貼心小建議,左邊有一個叉叉,點選滑鼠左鍵可以看到Eclipse給了幾個貼心的小建議,例如下圖Eclipse就告訴開發者可能是少import java.io.File; … 等等,雖然不一定每次都會正確,這個便利的設計可以讓開發者少打一些字,也可以更快找出錯誤的原因。

下圖是必須做Exception判斷。

相關文章

Android 2.3 @JavascriptInterface Issue

JavascriptInterface 這個問題相信 Google 一下就可以找到很多文章,雖然如此小蛙還是試了好久才成功,這篇文章記錄一下當時小蛙不成功的盲點在哪裡。上一篇文章「
2014-03-28 20:25:25
hans

18

Android 與 WebView 中的 Javascript 相互溝通

最近的一個 app 需要讓 Android 可以呼叫 WebView 中的 Javascript,並且按下 WebView 中的按鈕時,也可以呼叫 Android 內部的方法,這篇文章記錄一下大概的做法,免得下次遇到又忘記 ...
2014-03-28 20:25:19
hans

18

java.lang.UnsupportedClassVersionError: Unsupported major.minor version 51.0

最近在做一些 struts2 的佈署,之前都是在 Windows 下進行,這次要佈署到遠端機器,OS 不同以及環境不同常造成一些怪異問題,這裡記錄一下如果遇到「java.lang.UnsupportedClassVers
2013-10-18 18:06:17
hans

18

Java 連結 MySQL

在寫程式需要連結到資料庫的時候,程式中必須要先有 Connector 及 Driver,MySQL 叫做 Connector/J,Oracle 則叫做 OJDBC。這篇文章是從舊部落格轉發過來,純粹當做文件記錄。
2013-06-03 23:17:32
hans

18

java.io.IOException: The character ‘ ‘ is an invalid XML character

小蛙的工作常常需要做一些資料庫匯出成 XML 格式,以 XML 達到交換資料的目的,上星期匯出的時候發現 java.io.IOException: The char
2013-05-19 14:27:21
hans

18

如 Javadoc 的程式文件產生器 Doxygen 簡易教學

小蛙之前寫 Java 居多,Java 裡面有一個 Javadoc 可以把開發者依照固定好的格式填寫的程式註解整理成一份完整的 HTML 文件,讓其他開發者可以很方便的查詢 API。例如:
2013-03-19 17:14:25
hans

18

Java 連結遠端 MySQL

昨天小蛙在我的股票精
2012-02-06 22:28:25
hans

18

Javascript用RegExp達成trim()

Java 中有個功能叫做 trim(),當字串中前後可能會有空白字元的時候,可以透過 trim() 來去除,小蛙使用 JavaScr
2011-03-14 15:33:47
hans

18




 回覆

你可以使用以下語法 HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="">

(required)

(required)

   
© 2012 蛙齋 Suffusion theme by Sayontan Sinha