看板java
标 题[doc] using POI-HSSF to handle excel file
发信站无名小站 (Sun Mar 26 13:42:43 2006)
转信站ptt!ctu-reader!ctu-gate!news.nctu!news.ntu!news.ee.ttu!netnews.csie.nc
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海