Apache的Jakata项目的POI子项目,目标是处理ole2对象。
POI可以到
http://www.apache.org/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编码解决中文高位字节截断
private
static
short
XLS_ENCODING
=
HSSFWorkbook.ENCODING_UTF_16;
//
定制日期格式
private
static
String DATE_FORMAT
=
"
m/d/yy
"
;
//
"m/d/yy h:mm"
//
定制浮点数格式
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样式为定制的浮点数格式
cell.setCellStyle(cellStyle);
//
设置该cell浮点数的显示格式
}
}
调用的过程:
/** */
/**
*
*/
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.apache.org/poi/hssf/quick-guide.html