有幸看到piliskys的文章,正好解决导出的问题,在此谢过!
       
原文地址http://www.blogjava.net/piliskys/archive/2005/11/23/21095.aspx
      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
posted on 2005-11-23 10:27 霹雳火