使用jsp导出到excel汇总

来源:互联网 发布:一组数据的range怎么求 编辑:程序博客网 时间:2024/05/10 14:14

使用jsp导出到excel汇总  

2008-07-26 21:03:42|  分类: 工作|字号 订阅

设置excel的导出格式
因为ms word和excel的文档都支持html文本格式,因此可以先用word或excel做好模版,另存为Web页,然后将该html改成jsp,将数据部分动态填入即可,不用很辛苦的调整格式

word页面只要在jsp头设置如下指令:
<%@page c %>

excel如下:
<%@page c %>
使用这种方式客户端必须安装有office软件,用户访问时将在ie中直接用word或excel打开该页面。
此方法优势是模板设计、调整方便,无需在服务器端使用复杂的POI或jxl技术,也无需在客户端使用ActiveX控件技术,更安全、方便,轻松实现较好的打印效果。 
///////////////////////////////////////////*******************************************************************************************
试试看从网页中把表格直接生成excel,虽然不是直接从sql到excel,不过反而更加方便而且人性化。。
网上倒是找到了不少的资料,发现一段javascript的功能实现代码,很不错:
var elTable = document.getElementById("tb"); 
var oRangeRef = document.body.createTextRange(); 
oRangeRef.moveToElementText( elTable ); 
oRangeRef.execCommand( "Copy" ); 
var appExcel = new ActiveXObject( "Excel.Application" ); 
appExcel.Visible = true; 
appExcel.Workbooks.Add().Worksheets.Item(1).Paste(); 
appExcel = null;
实现功能就是把id为tb的表格内的数据都生成为excel,我试试了可行,但是放到服务器来运行就是script error的提示,然后网上到处求问,也找了百度空间的几位高手朋友问了下,可是还是不得其法。。不过还是很感谢他们的热心帮助。没办法,我只能用别的方法来实现了,其实满喜欢上面的这个javascript的功能的,比较人性化。。可惜我黔驴技穷,无法用上它,哎!~既然我帮客户用jsp写的程序,那么我就还是用jsp来实现这个功能吧。。
于是找到了这么一个方法:
原文出自:http://www.jsp.mlc.edu.tw/viewitem.jsp?itemid=0000000065

***************************************************************************************************
一、将网页资料以excel报表以线上浏览方式呈现 
xls651.jsp原始码如下 

<%@ page c %>
<!-- 以上这行设定本网页为excel格式的网页 -->
<%
response.setHeader("Content-disposition","inline;filename=test1.xls");
//以上这行设定传送到前端浏览器时的档名为test1.xls
//就是靠这一行,让前端浏览器以为接收到一个excel档 
%>
<html>
<head>
<title>Excel档案呈现方式</title>
</head>
<body>
<table border="1" width="100%">
<tr>
<td>姓名</td><td>身份证字号</td><td>生日</td>
</tr>
<tr>
<td>李玟</td><td>N111111111</td><td>1900/11/12</td>
</tr>
<tr>
<td>梁静如</td><td>N222222222</td><td>1923/10/1</td>
</tr>
<tr>
<td>张惠妹</td><td>N333333333</td><td>1934/12/18</td>
</tr>
</table>
</body>
</html>
二、将网页资料以excel报表以下载的方式呈现
这个jsp档和上一个差不多,只有差别在这一行:线上浏览的方式: response.setHeader("Content-disposition","inline;filename=test1.xls"); 下载的方式:response.setHeader("Content-disposition","attachment;filename=test2.xls"); 
附注:
1.以上纯以静态网页的方式呈现excel档,配合资料库,你便能以动态的报表方式做出excel报表了
2.完全不用安装任何元件,或只能受限於win平台,一个简单的方式解决你的报表需求 
3.聪明的你,应该能举一反三,知道如何将网页资料以word的doc格式展现了吧!
(是不是只要把contentType改成"application/msword"以及filename的副档名改成.doc就可以!/////////////////////////////////////////////////////////////////////
1. 在Word或Excel中制作报表的样式。 
Excel的行高和列宽单位无法用mm或cm表示。 
需要计算。在1024*768下,1CM约为38像素。
以此为基准,可计算并控制报表的行列位置。

2. 在Word中设置“表格——标题行重复”。 字串6 
在Excel中设置“文件——页面设置——工作表——打印标题”。
3. 另存为网页,改后缀名“htm”为“jsp”。 
4. Word报表文件头为: 字串2 
<%@page c language="java"%> 
Excel报表文件头为: 

<% @page c language="java"%> 

5. 在文件头部分定义打印参数变量如下(以Excel为例): 

<% 


//需要打印的记录条数
int PrintRowCount=RowCount; 字串9 
//每页打印的记录条数
int PageRowCount=16; 字串1 
//最后一页需要打印的空行的数目
int LoopNum=PageRowCount-PrintRowCount%PageRowCount; 字串3 
//打印区域的高度,其中2的意思是每页需要重复的标题行的数目
int PrintAreaHeight=(PrintRowCount%PageRowCount==0)?PrintRowCount2:PrintRowCount LoopNum 2; 字串5 
%>
/////////////////////////////////////////////////////////////////////////////////////////////////////////

jsp导出Excel
在开发MIS系统的过程中,客户经常会提出这样的要求:将查询结果导出为Excel文件保存下来。经常是写一次就忘一次,因此决定今天将以前的代码和遇到的问题进行一下总结,下面进入正题。
背景:本例的代码来源于我给学校开发的一个奖学金管理系统,使用者在前台设置一组查询条件之后,点击“导出”按钮即可得到Excel文件了。
目的:得到一个Excel文件,包括姓名、学号、奖项类别、所在院系、年级、学生类别、银行卡号、金额等内容项
文件:export.jsp(前台页面,指定搜索条件)、exporting.jsp(后台页面,export.jsp的action)、ExportExcel.java(javabean文件,负责具体的操作)、Dbase.java(javabean文件,负责数据库操作)
代码:
export.jsp:此代码略去,主要是指定搜索条件
exporting.jsp:
<%@ page c language="java" import="java.sql.*,DBCon.*"errorPage="" %>
<jsp:useBean id="excel" scope="request"class="DBCon.ExportExcel"/>
<jsp:useBean id="dbase" scope="request"class="DBCon.Dbase"/>
<html>
<head>
<meta http-equiv="Content-Type" c>
<title>无标题文档</title>
</head>
<%
String user=(String)session.getAttribute("c_name");//登陆名
String sql=""; 
String colleage=request.getParameter("colleage");//从export.jsp页面获得
String type=request.getParameter("burseType");//从export.jsp页面获得
String studType=request.getParameter("studType");//从export.jsp页面获得
studType=new String(studType.getBytes("ISO8859_1"),"GBK");
String grade=request.getParameter("studGrade");//从export.jsp页面获得
String title=request.getParameter("title");//从export.jsp页面获得
title=dbase.toChinese(title);
//下面将得到sql语句,与本例业务逻辑相关,无需明白
if(user.equals("ygb"))//研工部用户登陆
sql="select * from master_burse where college like'%"+colleage+"%' and code like '%"+type+"%' and grade like'%"+grade+"%' and type like '%"+studType+"%' andflag1='1'";
else//院系用户登陆
sql="select * from master_burse where college like'%"+colleage+"%' and code like '%"+type+"%' and grade like'%"+grade+"%' and type like '%"+studType+"%'";
response.reset();
response.setContentType("application/vnd.ms-excel");
excel.export(response.getOutputStream(),sql);
//if(excel.export(sql,title,request,application))
//out.println("<ahref='"+request.getContextPath()+"/"+GetSysTime.getDay()+".xls'target='blank' >"+"下载"+title+"</a>"+"(右键单击另存为)");
//else{ 
%>
<!-- <script language="JavaScript"type="text/javascript">
alert("导出失败");
history.go(-1);
</script> -->
<%// } %>
<body>
</body>
</html>

ExportExcel.java:
package DBCon;

import DBCon.*;
import jxl.*;
import jxl.write.*;
import java.sql.*;
import java.util.*;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class ExportExcel {

private Dbase dbase=null;//用于完成各种对数据库的操作
private Vector content=null;//用于存放所要查询的记录
private ResultSet rs=null;

private String name="";//学生姓名
private String studId="";//学号
private String burseType="";//奖项类别
private String grade="";//所在年级
private String studType="";//学生类型
private String colleage="";//所在院系
private String card="";//银行卡号
private int number=0;//奖金金额
private String []title={"姓名","学号","奖项类别","所在院系","年级","学生类别","银行卡号","金额"};
private String targetFile="";

public ExportExcel(){
dbase=new Dbase();
content=new Vector();
}

public boolean export(String sql,String name,HttpServletRequestrequest,ServletContext context){
targetFile+="/"+GetSysTime.getTime()+".xls";
content=getContent(sql);//以向量的形式存放所有的记录
String path=context.getRealPath(targetFile); 
try{
Vector inner=null;
String value="";//存放在cell中的文本值
int num=0;//存放在cell中的数字值

OutputStream os=new FileOutputStream(path);
WritableWorkbook workbook=Workbook.createWorkbook(os);//创建工作薄
WritableSheet worksheet=workbook.createSheet("record",0);//创建第一个工作表,name:工作表名称
Label label=null;//用于写入文本内容到工作表中去
jxl.write.Number nmb=null;//用于写入数值到工作表中去

//开始写入第一行,即标题栏
for(int i=0;i<title.length;i++){
label=new Label(i,0,title);//参数依次代表列数、行数、内容
worksheet.addCell(label);//写入单元格
}
//开始写入内容
for(int i=0;i<content.size();i++){
inner=(Vector)content.get(i);//获取一条记录
for(int j=0;j<inner.size();j++){
//一个一个字段的放入excel中去
if(j==inner.size()-1){//插入的数值
Integer num_=(Integer)inner.get(j);
num=num_.intValue();
nmb=new jxl.write.Number(j,i+1,num);
worksheet.addCell(nmb);
}
else{
value=(String)inner.get(j);
label=new Label(j,i+1,value);
worksheet.addCell(label);

}

workbook.write(); 
workbook.close();

}
catch(Exception e){
e.printStackTrace();
return false;

return true; 
}

public void export(OutputStream os,String sql){
content=getContent(sql);//以向量的形式存放所有的记录

try{
Vector inner=null;
String value="";//存放在cell中的文本值
int num=0;//存放在cell中的数字值

WritableWorkbook workbook=Workbook.createWorkbook(os);//创建工作薄
WritableSheet worksheet=workbook.createSheet("record",0);//创建第一个工作表,name:工作表名称
//WritableSheet worksheet=workbook.createSheet(name,0);//创建第一个工作表,name:工作表名称

Label label=null;//用于写入文本内容到工作表中去
jxl.write.Number nmb=null;//用于写入数值到工作表中去

//开始写入第一行,即标题栏
for(int i=0;i<title.length;i++){
label=new Label(i,0,title);//参数依次代表列数、行数、内容
worksheet.addCell(label);//写入单元格
}
//开始写入内容
for(int i=0;i<content.size();i++){
inner=(Vector)content.get(i);//获取一条记录
for(int j=0;j<inner.size();j++){
//一个一个字段的放入excel中去
if(j==inner.size()-1){//插入的数值
Integer num_=(Integer)inner.get(j);
num=num_.intValue();
nmb=new jxl.write.Number(j,i+1,num);
worksheet.addCell(nmb);
}
else{
value=(String)inner.get(j);
label=new Label(j,i+1,value);
worksheet.addCell(label);

}

workbook.write(); 
workbook.close();

}
catch(Exception e){
e.printStackTrace();
//return false;

//return true; 
}

public Vector getContent(String sql){
rs=dbase.executeQuery(sql);
Vector outter=new Vector();
try{
while(rs.next()){
Vector inner=new Vector();//用于存放一条记录
name=dbase.getName(rs.getString("studId"));//得到学生姓名
studId=rs.getString("studId");//得到学号
burseType=dbase.getBurseName(rs.getString("code"));//得到奖学金类型
colleage=dbase.getCollName(rs.getString("college"));//得到所在院系
grade=rs.getString("grade");
studType=rs.getString("type");
card=dbase.getCard(rs.getString("studId"));//得到银行卡号
number=dbase.getNum(rs.getString("code"));//得到奖学金额度
inner.add(name);
inner.add(studId);
inner.add(burseType);
inner.add(colleage);
inner.add(grade);
inner.add(studType);
inner.add(card);
inner.add(number);
outter.add(inner);
}
}
catch(Exception e){
e.printStackTrace();
//rs.close();
return null;
}
return outter; 

}

Dbase.java:此代码略去,主要执行一些通用的数据库操作,如增删改查等等。本例中用到了其executeQuery(String sql)方法,其作用就是返回一个结果集,类型为ResultSet,可以自行改写这个方法,只要返回ResultSet类型即可。

OK,在export.jsp页面中点击提交按钮之后IE就会弹出一个提示框,询问你是要保存还是要打开这个Excel文件。
如下几点需要说明:
1.response.reset();//清空response的buffer
response.setContentType("application/vnd.ms-excel");//设置正确的输出类型
这两句必须要有
2.大家应该注意到ExportExcel.java中还有一个方法
export(String sql,String name,HttpServletRequest request,ServletContextcontext),它出现在exporting.jsp中蓝色注释部分,它的作用其实与export(OutputStream os,String sql)差不多,只不过前者是首先在服务器上生成一个excel文件,然后在返回页面上提供一个超链接让用户来点击下载或者打开这个Excel文件,而后者则是在IE中动态生成Excel文件,在服务器上没有生成相应的Excel文件。在具体的应用中,可以根据实际需要来选择使用哪个方法。

 

 

 

 

 

 

 

Java操作Excel
首先下载jar包 jxl.jar 
下载地址:
http://www.andykhan.com/jexcelapi/download.html
我就下载的第一个 JExcelApi v2.6.8(1920kbytes) 这个,
解压后jexcelapi_2_6_8\jexcelapi\docs下的index.html为该jar包的API文档
jexcelapi_2_6_8\jexcelapi下有一个jxl.jar
将jxl.jar拷贝到你项目的lib目录下,就引入jar包了

楼主的意思是从数据库读出数据,之后导出Excel文件,
我写了一个小例子,我介绍一下我的程序内容:
不知道你用什么数据库,我以oracle数据库的dept表为例
dept表字段为数字类型的deptno,字符串类型的dname和loc,就这3个字段

DBConn.java 类提供了两个方法,
方法getConn()返回与数据库的连接Connection
方法closeConn()关闭与数据库的连接

Dept.java 是一个JavaBean,封装了dept表的一条记录,成员变量分别对应表dept的3个字段,并生成get和set方法

DeptDao.java 类提供方法 public static List<Dept>getDept(Connection conn)
返回一个List集合,里面装的是一个个的Dept对象,每一个对象都包含了dept表的一条记录,总之就是
这个集合里面包含了dept表的所有记录内容

介绍了这么多,也是为了下面的测试类能看明白,
测试类Test.java(用Struts只需将下面的业务逻辑应用到相应Action即可)


import java.io.File;
import java.util.Iterator;
import java.util.List;

import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;

public class Test {
public static void main(String[] args) {

try {
// 在D盘生成一个名为"Java操作Excel.xls"的Excel文件
WritableWorkbook wwb = Workbook.createWorkbook(newFile("D:/Java操作Excel.xls"));

// 生成名为第一页的工作表,参数0表示这是第一页
WritableSheet sheet = wwb.createSheet("第一页", 0);

DBConn db = new DBConn();
List<Dept> list =DeptDao.getDept(db.getConn());

//声明一个保存数字的单元格,使用Number的完整包路径,写全包名,防止与java.lang包的Number发生冲突
jxl.write.Number number;
//声明Label对象的2个引用变量
Label labe1;
Label labe2;

//i与j用于计数
int i = 0;
int j = 0;

//遍历集合中的元素
for (Iterator<Dept> iterator =list.iterator(); iterator.hasNext();) {
Dept dept = iterator.next();

/**
* Number的构造方法 Number(第几列,第几行,数字内容)
* Label 的构造方法 Label (第几列,第几行,字符串内容)
* 0,0 表示第一列,第一行
* (i, j, dept.getDeptno()) 将第一列,第一行,内容设置为dept.getDeptno()方法返回的数字类型字段deptno
* (++i, j, dept.getDname()) 将第二列,第一行,内容设置为dept.getDname()方法返回的字符串类型字段dname
* (++i, j, dept.getLoc()) 将第三列,第一行,内容设置为dept.getLoc()方法返回的字符串类型字段loc
*/
number = new jxl.write.Number(i, j,dept.getDeptno());
labe1 = new Label(++i, j, dept.getDname());
labe2 = new Label(++i, j, dept.getLoc());

// 将定义好的单元格添加到工作表中
sheet.addCell(number);
sheet.addCell(labe1);
sheet.addCell(labe2);

/**
* i = 0; 那么下次循环后开始还是第一列
* j++; 那么下次循环后开始就是第二行
*/
i = 0;
j++;
}

// 写入数据并关闭文件
wwb.write();
wwb.close();

// 关闭数据库连接
db.closeConn();

} catch (Exception e) {
e.printStackTrace();
}
}
} 程序没了,你看下这个吧,比较简单,仔细点应该可以看懂运行后D盘就有一个Excel文件了,和表dept一样,

 

 

 

 

1. 利用HSSF接口创建真正的Excel对象 
     Jakarta POI 是一套用于访问微软格式文档的Java API。Jakarta POI有很多组件组成,其中有用于操作Excel格式文件的HSSF和用于早在Word的HWPF,在各种组件中目前只有用于操作Excel的HSSF相对成熟。它的官方首页是:http://jakarta.apache.org/poi/hssf/index.html,这里可以下载到它的最新版本和文档
目前比较成熟的是HSSF接口,处理MS Excel(97-2002)对象。它是真正的Excel对象,你可以控制一些属性如sheet,cell等等。 

2. HSSFWorkbook excell文档对象介绍 
HSSFWorkbook即是一个Excell对象 
HSSFSheet excell的表单:是通过Excell对象创建的 
HSSFRow excell的行:通过excell的表单sheet创建的 
HSSFCell excell的格子单元:这里需要注意的是,在Excel二维数组中,第一个参数表示列,第二个表示行 
HSSFFont excell字体 
HSSFName 名称 
HSSFDataFormat 日期格式 
HSSFHeader sheet头HSSFFooter sheet尾 
HSSFCellStyle cell样式 :是有HSSFCellStyle对象创建样式的; 

3. 设置边框和颜色 
   HSSFWorkbook wb = new HSSFWorkbook(); 
   HSSFCellStyle style = wb.createCellStyle(); 
    设置边框线 
   style.setBorderBottom(HSSFCellStyle.BORDER_THIN); 
   style.setBorderLeft(HSSFCellStyle.BORDER_THIN); 
   style.setBorderRight(HSSFCellStyle.BORDER_THIN); 
   style.setBorderTop(HSSFCellStyle.BORDER_THIN); 
给边框线上颜色 
   style.setBottomBorderColor(HSSFColor.GREEN.index); 
   style.setLeftBorderColor(HSSFColor.GREEN.index); 
   style.setRightBorderColor(HSSFColor.GREEN.index); 
style.setTopBorderColor(HSSFColor.GREEN.index); 

4. 设置文字在单元格里面的位置  
   style.setAlignment(HSSFCellStyle.ALIGN_CENTER); 
style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); 

5. 设置字体  
      创建Font对象   
      Font font = wb.createFont();   
      设置字体   
      font.setFontName("黑体");   
      着色   
      font.setColor(HSSFColor.BLUE.index);   
      斜体   
font.setItalic(true);   
      字体大小   
font.setFontHeight((short)300);  
6. 单元格格式化 
  HSSFCellStyle style = wb.createCellStyle(); 
style.setDataFormat(wb.createDataFormat().getFormat("m/d/yy h:mm")); 
7. 前景和背景填充的着色 
   style.setFillBackgroundColor(HSSFColor.BLUE.index); 
   style.setFillForegroundColor(HSSFColor.BLUE.index); 

8. 合并单元格 
从第r1行l1列到r2行到l2列合并单元格 
   Region r2 = new Region(r1,(short)l1,r2,(short)l2); 
   sheet.addMergedRegion(r2); 
9.设置sheet编码字符 
    HSSFSheet sheet = wb.createSheet(); 
wb.setSheetName(0,sheetName , HSSFCell.ENCODING_UTF_16); 
   设置单元格编码字符 
cell[i][j].setEncoding(HSSFCell.ENCODING_UTF_16); 

导出显示格式 
    response.setContentType("Application/msexcel;charset=UTF-8"); 
    response.setHeader("Content-disposition","attachment;filename="                       + java.net.URLEncoder.encode("各局点效率数据汇总表.xls","UTF-8")); 
wb.write(response.getOutputStream()); 

songfantasy (资深程序员) 2009-11-18

functionprintPage(){ 
var oXL = new ActiveXObject("Excel.Application"); 
var oWB = oXL.Workbooks.Add(); 
var oSheet = oWB.ActiveSheet; 
var item=document.getElementById("tab"); 
var Lenr = item.rows.length; 
for (var i=0;i<Lenr;i++) 

   var Lenc = item.rows(i).cells.length; 
   for (j=0;j<Lenc;j++) 
   { 
  oSheet.Cells(i+1,j+1).value = item.rows(i).cells(j).innerText; 
   } 

oXL.Visible = true; 



需要传入table的id 

代码中显示为:var item =document.getElementById("table的id"); 

这个只是将JSP页面中一个table中的数据导出为Excel,使用中你注意下页面,看看table中的属性是不是完善!! 

 

 

 

 

jsp导出excel

     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

 

原创粉丝点击