Apache的Jakata項目的POI子項目,目標是處理ole2對象。
POI可以到
http://www./dyn/closer.cgi/jakarta/poi/
下載。
編譯好的jar主要有這樣4個:poi包,poi Browser包,poi hdf包,poi hssf例程包。實際運行時,需要有poi包就可以了。
HSSF提供給用戶使用的對象在org.apache.poi.hssf.usermodel包中,主要部分包括Excell對象,樣式和格式,還有輔助操作。有以下幾種對象:
HSSFWorkbook excell的文檔對象
HSSFSheet excell的表單
HSSFRow excell的行
HSSFCell excell的格子單元
HSSFFont excell字體
HSSFName 名稱
HSSFDataFormat 日期格式
在poi1.7中才有以下2項:
HSSFHeader sheet頭
HSSFFooter sheet尾
和這個樣式
HSSFCellStyle cell樣式
輔助操作包括
HSSFDateUtil 日期
HSSFPrintSetup 打印
HSSFErrorConstants 錯誤信息表
下面是一個簡單的例子:
/**
*
*/
package
com.justinmobile.payease.admin.commons.excel;
import
java.io.FileNotFoundException;
import
java.io.FileOutputStream;
import
java.io.IOException;
import
java.util.Calendar;
import
org.apache.poi.hssf.usermodel.HSSFCell;
import
org.apache.poi.hssf.usermodel.HSSFCellStyle;
import
org.apache.poi.hssf.usermodel.HSSFDataFormat;
import
org.apache.poi.hssf.usermodel.HSSFRow;
import
org.apache.poi.hssf.usermodel.HSSFSheet;
import
org.apache.poi.hssf.usermodel.HSSFWorkbook;
/**
* 生成導出Excel文件對象
*
*
@author
John.Zhu
*
*/
public
class
XLSExport
{
//
設置cell編碼解決中文高位字節(jié)截斷
private
static
short
XLS_ENCODING
=
HSSFWorkbook.ENCODING_UTF_16;
//
定制日期格式
private
static
String DATE_FORMAT
=
"
m/d/yy
"
;
//
"m/d/yy h:mm"
//
定制浮點數(shù)格式
private
static
String NUMBER_FORMAT
=
"
#,##0.00
"
;
private
String xlsFileName;
private
HSSFWorkbook workbook;
private
HSSFSheet sheet;
private
HSSFRow row;
/**
* 初始化Excel
*
*
@param
fileName
* 導出文件名
*/
public
XLSExport(String fileName)
{
this
.xlsFileName
=
fileName;
this
.workbook
=
new
HSSFWorkbook();
this
.sheet
=
workbook.createSheet();
}
/**
* 導出Excel文件
*
*
@throws
XLSException
*/
public
void
exportXLS()
throws
XLSException
{
try
{
FileOutputStream fOut
=
new
FileOutputStream(xlsFileName);
workbook.write(fOut);
fOut.flush();
fOut.close();
}
catch
(FileNotFoundException e)
{
throw
new
XLSException(
"
生成導出Excel文件出錯!
"
, e);
}
catch
(IOException e)
{
throw
new
XLSException(
"
寫入Excel文件出錯!
"
, e);
}
}
/**
* 增加一行
*
*
@param
index
* 行號
*/
public
void
createRow(
int
index)
{
this
.row
=
this
.sheet.createRow(index);
}
/**
* 設置單元格
*
*
@param
index
* 列號
*
@param
value
* 單元格填充值
*/
public
void
setCell(
int
index, String value)
{
HSSFCell cell
=
this
.row.createCell((
short
) index);
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
cell.setEncoding(XLS_ENCODING);
cell.setCellValue(value);
}
/**
* 設置單元格
*
*
@param
index
* 列號
*
@param
value
* 單元格填充值
*/
public
void
setCell(
int
index, Calendar value)
{
HSSFCell cell
=
this
.row.createCell((
short
) index);
cell.setEncoding(XLS_ENCODING);
cell.setCellValue(value.getTime());
HSSFCellStyle cellStyle
=
workbook.createCellStyle();
//
建立新的cell樣式
cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat(DATE_FORMAT));
//
設置cell樣式為定制的日期格式
cell.setCellStyle(cellStyle);
//
設置該cell日期的顯示格式
}
/**
* 設置單元格
*
*
@param
index
* 列號
*
@param
value
* 單元格填充值
*/
public
void
setCell(
int
index,
int
value)
{
HSSFCell cell
=
this
.row.createCell((
short
) index);
cell.setCellType(HSSFCell.CELL_TYPE_NUMERIC);
cell.setCellValue(value);
}
/**
* 設置單元格
*
*
@param
index
* 列號
*
@param
value
* 單元格填充值
*/
public
void
setCell(
int
index,
double
value)
{
HSSFCell cell
=
this
.row.createCell((
short
) index);
cell.setCellType(HSSFCell.CELL_TYPE_NUMERIC);
cell.setCellValue(value);
HSSFCellStyle cellStyle
=
workbook.createCellStyle();
//
建立新的cell樣式
HSSFDataFormat format
=
workbook.createDataFormat();
cellStyle.setDataFormat(format.getFormat(NUMBER_FORMAT));
//
設置cell樣式為定制的浮點數(shù)格式
cell.setCellStyle(cellStyle);
//
設置該cell浮點數(shù)的顯示格式
}
}
調(diào)用的過程:
/**
*
*/
package
com.justinmobile.payease.admin.commons.excel;
import
java.util.Calendar;
/**
* 導出Excel示例
*
*
@author
John.Zhu
*
*/
public
class
XLSDemo
{
public
static
void
main(String[] args)
{
System.out.println(
"
開始導出Excel文件
"
);
XLSExport e
=
new
XLSExport(
"
d:/test.xls
"
);
e.createRow(
0
);
e.setCell(
0
,
"
編號
"
);
e.setCell(
1
,
"
名稱
"
);
e.setCell(
2
,
"
日期
"
);
e.setCell(
3
,
"
金額
"
);
e.createRow(
1
);
e.setCell(
0
,
1
);
e.setCell(
1
,
"
工商銀行
"
);
e.setCell(
2
, Calendar.getInstance());
e.setCell(
3
,
111123.99
);
e.createRow(
2
);
e.setCell(
0
,
2
);
e.setCell(
1
,
"
招商銀行
"
);
e.setCell(
2
, Calendar.getInstance());
e.setCell(
3
,
222456.88
);
try
{
e.exportXLS();
System.out.println(
"
導出Excel文件[成功]
"
);
}
catch
(XLSException e1)
{
System.out.println(
"
導出Excel文件[失敗]
"
);
e1.printStackTrace();
}
}
}
參考文檔: http://jakarta./poi/hssf/quick-guide.html





