JSP中导入导出Excel文件
一.POI简介
Jakarta POI 是apache的子项目,目标是处理ole2对象。它提供了一组操纵Windows文档的Java API
目前比较成熟的是HSSF接口,处理罗江客舍MS Excel(97-2002)对象。它不象我们仅仅是用csv生成的没有格式的可以由Excel转换的东西,而是真正的Excel对象,你可以控制一些属性如sheet,cell等等。
二.HSSF概况
HSSF 飞行员图片是sHorrible SpreadSheet Format的缩写,也即“讨厌的电子表格格式”。 也许HSSF的名字有点滑稽,就本质而言它是一个非常严肃、正规的API。通过HSSF,你可以用纯Java代码来读取、写入、修改Excel文件。
HSSF 为读取操作提供了两类API:urmodel和eventurmodel,即“用户模型”和“事件-用户模型”。前者很好理解,后者比较抽象,但操作效率要高得多。
三.开始编码
1 . 准备工作
要求:JDK 1.4+POI开发包
可以到 www.apache/i/jakarta/poi/ 最新的POI工具包
2 . EXCEL 结构
HSSFWorkbook excel 文档对象介绍
HSSFSheet excel的表单
HSSFRow excel的行
HSSFCell excel的格子单元
HSSFFont excel字体六味地黄丸功效与作用和适用人群
HSSFName 名称
HSSFDataFormat 日期格式
HSSFHeader sheet头
HSSFFooter sheet尾
和这个样式
HSSFCellStyle cell样式
辅助操作包括
HSSFDateUtil 日期
HSSFPrintSetup 打印
HSSFErrorConstants 错误信息表
4 .脚踏实地的近义词 可参考文档笔记本无线网络找不到
POI 主页:jakarta.apache/poi/,
初学者如何快速上手使用POI HSSF
jakarta.apache/poi/hssf/quick-guide.html 。
代码例子
/ur1/6749/archives/2005/18347.html
里面有很多例子代码,可以很方便上手。
四.使用心得
POI HSSF 的urmodel包把Excel文件映射成我们熟悉的结构,诸如Workbook、Sheet、Row新年愿望怎么写、Cell等,它把整个结构以一组对象的形式保存在内存之中,便于理解,操作方便,基本上能够满足我们的要求,所以说这个是一个不错的选择。
1.创建工作簿 (WORKBOOK)
HSSFWorkbook wb = new HSSFWorkbook();
FileOutputStream fileOut = new FileOutputStream("workbook.xls");
wb.write(fileOut);
fileOut.clo();
2.世界上最大的皇宫创建工作表(SHEET)
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet1 = wb.createSheet("new sheet");
HSSFSheet sheet2 = wb.createSheet("cond sheet");
FileOutputStream fileOut = new FileOutputStream("workbook.xls");
wb.write(fileOut);
fileOut.clo();
3.创建单元格(CELL)
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet("new sheet");
HSSFRow row = ateRow((short)0);
HSSFCell cell = ateCell((short)0);
cell.tCellValue(1);
ateCell((short)1).tCellValue(1.2);
ateCell((short)2).tCellValue("This is a string");
ateCell((short)3).tCellValue(true);
FileOutputStream fileOut = new FileOutputStream("workbook.xls");
wb.write(fileOut);
fileOut.clo();
4.创建指定单元格式的单元格
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet("new sheet");
HSSFRow row = ateRow((short)0);
HSSFCell cell = ateCell((short)0);
cell.tCellValue(new Date());
HSSFCellStyle cellStyle = wb.createCellStyle();
cellStyle.BuiltinFormat("m/d/yy h:mm"));
cell = ateCell((short)1);
cell.tCellValue(new Date());
cell.tCellStyle(cellStyle);
FileOutputStream fileOut = new FileOutputStream("workbook.xls");
wb.write(fileOut);
fileOut.clo();
5. 单元格的不同格式
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet("new sheet");
HSSFRow row = ateRow((short)2);
ateCell((short) 0).tCellValue(1.1);
ateCell((short) 1).tCellValue(new Date());
ateCell((short) 2).tCellValue("a string");
ateCell((short) 3).tCellValue(true);
ateCell((short) 4).tCellType(HSSFCell.CELL_TYPE_ERROR);
FileOutputStream fileOut = new FileOutputStream("workbook.xls");
wb.write(fileOut);
fileOut.clo();
6.单元格的不通对齐方式
public static void main(String[] args) throws IOException
{
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet("new sheet");
HSSFRow row = ateRow((short) 2);
createCell(wb, row, (short) 0, HSSFCellStyle.ALIGN_CENTER);
createCell(wb, row, (short) 1, HSSFCellStyle.ALIGN_CENTER_SELECTION);
createCell(wb, row, (short) 2, HSSFCellStyle.ALIGN_FILL);
createCell(wb, row, (short) 3, HSSFCellStyle.ALIGN_GENERAL);
createCell(wb, row, (short) 4, HSSFCellStyle.ALIGN_JUSTIFY);
createCell(wb, row, (short) 5, HSSFCellStyle.ALIGN_LEFT);
createCell(wb, row, (short) 6, HSSFCellStyle.ALIGN_RIGHT);
FileOutputStream fileOut = new FileOutputStream("workbook.xls");
wb.write(fileOut);
fileOut.clo();
}
private static void createCell(HSSFWorkbook wb, HSSFRow row, short column, short align) 歌颂祖国的对联
{
HSSFCell cell = ateCell(column);
cell.tCellValue("Align It");
HSSFCellStyle cellStyle = wb.createCellStyle();