您的位置:首页 > Web前端 > JavaScript

JSP中将数据生成Excel格式 POI

2009-11-08 22:50 399 查看
JSP中将数据生成Excel格式
Excel是办公常用软件之一。在一个Java应用中,将一部分数据生成Excel格式,是与其他系统无缝连结的重要手段。POI是Apache Jakarta的子项目,使用简单方便,对中文支持非常好,功能也比较强大。下在地址为:http://jakarta.apache.org/poi。这套API是纯Java的,并不依赖Windows系统,即使运行在Linux下,它同样能够正确的处理Excel文件。目前从网上下载最新的安装包的名字是poi-bin-2.5.1-final-20040804.zip,将该文件解压缩之后,在生成的文件夹中,找到poi-2.5.1-final-20040804.jar包。然后,将该包放置到应用程序的WEB-INF的lib下,重启Tomcat即可。

以下是用POI创建Excel工作薄的例子:

<%@ page contentType="text/html;charset=gb2312"%>

<%@ page import="java.io.*,org.apache.poi.hssf.usermodel.*"%>

<%

HSSFWorkbook workbook = new HSSFWorkbook();   //创建新的Excel工作薄

HSSFSheet sheet = workbook.createSheet("JSP");   //在Excel工作薄中建工作表,名为缺省

HSSFRow row = sheet.createRow((short)0); //在索引0的位置建行(最顶端的行)

HSSFCell cell = row.createCell((short)0); //在索引0的位置建单元格

cell.setEncoding(HSSFCell.ENCODING_UTF_16); //定义单元格为字符串类型

cell.setCellValue("作者"); //在单元格输入一些内容

cell = row.createCell((short)1);

cell.setEncoding(HSSFCell.ENCODING_UTF_16); //定义单元格为字符串类型

cell.setCellValue("编辑");  //在单元格输入一些内容

row = sheet.createRow((short)1); //在索引1的位置创建行(最顶端的行)

cell = row.createCell((short)0); //在索引0的位置创建单元格(左上端)

; cell.setEncoding(HSSFCell.ENCODING_UTF_16); //定义单元格为字符串类型

cell.setCellValue("张三"); //在单元格输入一些内容

cell=row.createCell((short)1);

cell.setEncoding(HSSFCell.ENCODING_UTF_16); //定义单元格为字符串类型

cell.setCellValue("李四");

;

String filename = application.getRealPath("/") + "text.xls";  //filename是工作薄的存放位置,存放在当前应用程序的根目录下

FileOutputStream fOut = new FileOutputStream(filename); //新建输出文件流

workbook.write(fOut); //把相应的Excel工作薄存盘

fOut.flush();

fOut.close(); //操作结束,关闭文件

out.println("excel文件已经生成,存放在<BR>" + filename);

%>


以下是用POI读取Excel工作薄的例子:
HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(fileToBeRead));
HSSFSheet sheet = workbook.getSheet("Sheet1");//获得表格
int rows = sheet.getPhysicalNumberOfRows();//获得行数
for (int r = 0;r<rows;r++)
{
HSSFRow row = sheet.getRow(r);//获取单行
if (row != null)
{
String value = "";
//由于excel中cell列的获得只能用short类型来获得,所以需设置4个short型参数用于获得列
short c_type=0;
short c_high=2;
short c_avg=3;
short c_low=4;
HSSFCell cell_type= row.getCell(c_type);//获取种类列
HSSFCell cell_high= row.getCell(c_high);//获取最高价列
HSSFCell cell_avg= row.getCell(c_avg);//获取平均价列
HSSFCell cell_low= row.getCell(c_low);//获取最低价列

long type_id=(long)cell_type.getNumericCellValue();//种类列的值
double price_high=cell_high.getNumericCellValue();//最高价值
double price_avg=cell_avg.getNumericCellValue();//平均价值
double price_low=cell_low.getNumericCellValue();//最低价值

}//end for if
}//end for for
}catch (Exception e)
{

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: