[doc] using POI-HSSF to handle excel file

看板java作者時間19年前 (2006/03/26 14:01), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
Hi, All 今天要介紹的主菜是 【POI-HSSF - Java API To Access Microsoft Excel Format Files】 url: http://jakarta.apache.org/poi/hssf/index.html 是POI的一個子project,在的功能就如同標題般地明顯。是的,我們要用這個 package來示範一下對M$ Excel做簡單的操作。 HSSF的架構很清明,俺稍為畫了一點關係的階層圖,大致如下: FileSystem (POIFSFileSystem) | | WorkBook --+ (HSSFWorkbook) | +-------+-------+-------+--..... Sheet Sheet Sheet Sheet ....Sheet (HSSFSheet) | +-------+-------+........ row row row ........row (HSSFRow) | +-------+-------+---.... cell cell cell ...cell (HSSFCell) | . 這只是使用關係的階層,請看倌別誤為繼承關係呦:) 要用hssf操作excel主要步驟為: 0. 先用POIFSFileSystem開啟ms ole type stream (可能是.doc .xls and etc.) 1. 透過POIFSFileSystem的instance產生HSSFWorkbook instance 2. 透過HSSFWorkbook instance取得要操作的HSSFSheet 3. 再視需要使用HSSFRow、HSSFCell等類別操作excel的內容 note: HSSFRow、HSSFCell各別有提供Iterator可以用來讀取資料 :) 以下為一個簡單的excel轉成csv格式的小程式^^ ========================================================================== import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.util.Iterator; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.poifs.filesystem.POIFSFileSystem; public class ExcelToCSV { public static void main(String[] args) throws FileNotFoundException, IOException { POIFSFileSystem fs =null; if(args.length>0){ fs= new POIFSFileSystem(new FileInputStream( args[0])); }else{ System.err.println("error: cannot open the file"); System.exit(0); } HSSFWorkbook wb = new HSSFWorkbook(fs); HSSFSheet sheet = wb.getSheetAt(0); Iterator rowit = sheet.rowIterator(); HSSFRow row = null; while (rowit.hasNext()) { row = (HSSFRow) rowit.next(); StringBuffer buf = new StringBuffer(); for (int i = 0; i < row.getPhysicalNumberOfCells(); i++) { String s = row.getCell((short) i). getStringCellValue().trim().replaceAll(",","{comma}"); buf.append(s); buf.append(','); } if(buf.length()>0) buf.deleteCharAt(buf.length()-1); System.out.println(buf.toString()); } } } ========================================================================= [快速上手指引] http://jakarta.apache.org/poi/hssf/quick-guide.html [稍為詳細一點的使用說明] http://jakarta.apache.org/poi/hssf/how-to.html [DOWNLOAD PAGE] http://jakarta.apache.org/site/downloads/downloads_poi.cgi -- 夫兵者不祥之器物或惡之故有道者不處君子居則貴左用兵則貴右兵者不祥之器非君子 之器不得已而用之恬淡為上勝而不美而美之者是樂殺人夫樂殺人者則不可得志於天下 矣吉事尚左凶事尚右偏將軍居左上將軍居右言以喪禮處之殺人之眾以哀悲泣之戰勝以 喪禮處之道常無名樸雖小天下莫能臣侯王若能守之萬物將自賓天地相合以降甘露民莫 之令而自均始制有名名亦既有夫亦將知止知止可以 pc210-59-94-148.nutn.edu.tw
文章代碼(AID): #149YuX00 (java)
文章代碼(AID): #149YuX00 (java)