jsp导出excel有很多种方法,在此介绍本人认为简单的一种,
前提:能在jsp页面取到要导出的内容,即 request能得到导出的数据,然后代码如下
<%@ page language="java" contentType="text/html;charset=gb2312"%>
<%@ page language="java" import="java.util.*,
org.apache.poi.hssf.usermodel.HSSFWorkbook,
org.apache.poi.hssf.usermodel.HSSFSheet,
org.apache.poi.hssf.usermodel.HSSFRow,
org.apache.poi.hssf.usermodel.HSSFCell,
java.text.DecimalFormat"%>
<%
response.reset();
response.setContentType("application/msexcel");
response.setHeader("Content-disposition","inline;filename=untitled.xls");//定义文件名
DecimalFormat f = new DecimalFormat("#,##0.00");
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet("sheet1");
String[] taxpayerid = request.getParameterValues("taxpayerid");
String[] taxpayername = request.getParameterValues("taxpayername");
String[] tax = request.getParameterValues("tax");
String[] taxreduce = request.getParameterValues("taxreduce");
String[] deratereasonname = request.getParameterValues("deratereasonname");
String[] orgdeptname = request.getParameterValues("orgdeptname");
String[] operatortime = request.getParameterValues("operatortime");
String[] declaredate = request.getParameterValues("declaredate");
String[] taxtermbegin = request.getParameterValues("taxtermbegin");
String[] taxtermend = request.getParameterValues("taxtermend");
//以下以写表头
//表头为第一行
HSSFRow row = sheet.createRow((short) 0);
//定义10列
HSSFCell cell1 = row.createCell((short) 0);
HSSFCell cell2 = row.createCell((short) 1);
HSSFCell cell3 = row.createCell((short) 2);
HSSFCell cell4 = row.createCell((short) 3);
HSSFCell cell5 = row.createCell((short) 4);
HSSFCell cell6 = row.createCell((short) 5);
HSSFCell cell7 = row.createCell((short) 6);
HSSFCell cell8 = row.createCell((short) 7);
HSSFCell cell9 = row.createCell((short) 8);
HSSFCell cell10 = row.createCell((short) 9);
cell1.setEncoding((short) 1);
cell1.setCellType(1);
cell2.setEncoding((short) 1);
cell2.setCellType(1);
cell3.setEncoding((short) 1);
cell3.setCellType(1);
cell4.setEncoding((short) 1);
cell4.setCellType(1);
cell5.setEncoding((short) 1);
cell5.setCellType(0);
cell6.setEncoding((short) 1);
cell6.setCellType(1);
cell7.setEncoding((short) 1);
cell7.setCellType(1);
cell8.setEncoding((short) 1);
cell8.setCellType(1);
cell9.setEncoding((short) 1);
cell9.setCellType(1);
cell10.setEncoding((short) 1);
cell10.setCellType(1);
//定义表头的内容
cell1.setCellValue("纳税人管理码");
cell2.setCellValue("纳税人名称");
cell3.setCellValue("税种");
cell4.setCellValue("减免金额");
cell5.setCellValue("减免原因");
cell6.setCellValue("征收单位");
cell7.setCellValue("操作日期");
cell8.setCellValue("申报日期");
cell9.setCellValue("所属期起");
cell10.setCellValue("所属期止");
for(int i= 0; i < taxpayerid.length; i++){
//定义数据从第二行开始
row = sheet.createRow((short) i+1);
cell1 = row.createCell((short) 0);
cell2 = row.createCell((short) 1);
cell3 = row.createCell((short) 2);
cell4 = row.createCell((short) 3);
cell5 = row.createCell((short) 4);
cell6 = row.createCell((short) 5);
cell7 = row.createCell((short) 6);
cell8 = row.createCell((short) 7);
cell9 = row.createCell((short) 8);
cell10 = row.createCell((short) 9);
cell1.setEncoding((short) 1);
cell1.setCellType(1);
cell2.setEncoding((short) 1);
cell2.setCellType(1);
cell3.setEncoding((short) 1);
cell3.setCellType(1);
cell4.setEncoding((short) 1);
cell4.setCellType(1);
cell5.setEncoding((short) 1);
cell5.setCellType(0);
cell6.setEncoding((short) 1);
cell6.setCellType(1);
cell7.setEncoding((short) 1);
cell7.setCellType(1);
cell8.setEncoding((short) 1);
cell8.setCellType(1);
cell9.setEncoding((short) 1);
cell9.setCellType(1);
cell10.setEncoding((short) 1);
cell10.setCellType(1);
//填充内容
cell1.setCellValue(taxpayerid[i]);
cell2.setCellValue(taxpayername[i]);
cell3.setCellValue(tax[i]);
cell4.setCellValue(f.parse(taxreduce[i].trim()).doubleValue());
cell5.setCellValue(deratereasonname[i]);
cell6.setCellValue(orgdeptname[i]);
cell7.setCellValue(operatortime[i].substring(0,16));
cell8.setCellValue(declaredate[i].substring(0,16));
cell9.setCellValue(taxtermbegin[i].substring(0,16));
cell10.setCellValue(taxtermend[i].substring(0,16));
}
wb.write(response.getOutputStream());
response.getOutputStream().flush();
response.getOutputStream().close();
%> 代码比较简单,首先把取得到的数据定义为一系列数组,然后定义表头,然后把取得的数据做为excel数据对应的放入,对poi有何疑问请参考
http://java2.5341.com/3.html