POI导出excel并下载(以流的形式在客户端下载,不保存文件在服务器上)
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.hssf.util.Region; //使用poi生成excel表格
public void ExportExcel(ArrayList arrList,OutputStream out){
PublicFunction fun = new PublicFunction();
// 声明一个工作薄
HSSFWorkbook workbook = new HSSFWorkbook();
// 生成一个表格
HSSFSheet sheet = workbook.createSheet("Sheet1");
// 设置表格默认列宽度为20个字节
sheet.setDefaultColumnWidth(); // 生成表格单元样式
HSSFCellStyle style = workbook.createCellStyle();
// 设置表格单元样式
style.setFillForegroundColor(HSSFColor.WHITE.index);
style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
style.setBorderBottom(HSSFCellStyle.BORDER_THIN);
style.setBorderLeft(HSSFCellStyle.BORDER_THIN);
style.setBorderRight(HSSFCellStyle.BORDER_THIN);
style.setBorderTop(HSSFCellStyle.BORDER_THIN);
style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
// 生成表格单元字体
HSSFFont font = workbook.createFont();
font.setColor(HSSFColor.BLACK.index);
font.setFontHeightInPoints((short) );
// 把字体应用到当前的样式
style.setFont(font); // 生成标题样式
HSSFCellStyle styletitle = workbook.createCellStyle();
styletitle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
styletitle.setFillBackgroundColor(HSSFColor.LIME.index);
HSSFFont fonttitle = workbook.createFont();
fonttitle.setColor(HSSFColor.BLACK.index);
fonttitle.setFontHeightInPoints((short) );
fonttitle.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
// 把字体应用到标题样式
styletitle.setFont(fonttitle); // 生成表头样式
HSSFCellStyle stylehead = workbook.createCellStyle();
stylehead.setAlignment(HSSFCellStyle.ALIGN_CENTER);
stylehead.setFillBackgroundColor(HSSFColor.AQUA.index);
HSSFFont fonthead = workbook.createFont();
fonthead.setColor(HSSFColor.BLACK.index);
fonthead.setFontHeightInPoints((short) );
fonthead.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
// 把字体应用到表头样式
stylehead.setFont(fonthead); //创建空白表格
for(int i=;i<arrList.size()+;i++){//行数(包括标题)
HSSFRow row = sheet.createRow(i);
if(i == ){
row.setHeight((short)(15.625*));
for(int j=;j<;j++){//列数
HSSFCell cell = row.createCell(j);
cell.setCellStyle(styletitle);
}
}else if(i == ){
row.setHeight((short)(15.625*));
for(int j=;j<;j++){//列数
HSSFCell cell = row.createCell(j);
cell.setCellStyle(stylehead);
}
}else{
for(int j=;j<;j++){//列数
HSSFCell cell = row.createCell(j);
cell.setCellStyle(style);
}
}
}
sheet.setColumnWidth(, (short)(35.7*));
sheet.setColumnWidth(, (short)(35.7*));
//填充数据
sheet.addMergedRegion(new Region(,(short),,(short)));
HSSFCell celltitle = sheet.getRow().getCell();
//设置标题
celltitle.setCellValue("矿权到期检查报表");
//设置表头
sheet.getRow().getCell().setCellValue("序号");//
sheet.getRow().getCell().setCellValue("许可证号");//
sheet.getRow().getCell().setCellValue("申请人");//
sheet.getRow().getCell().setCellValue("有效期止");//
sheet.getRow().getCell().setCellValue("状态");//
sheet.getRow().getCell().setCellValue("天数");//
for(int i=;i<arrList.size()+;i++){//行数
KQDQJC_Bean bean = new KQDQJC_Bean();
bean = (KQDQJC_Bean)arrList.get(i-);
for(int j=;j<;j++){//列数
switch(j){
case :
sheet.getRow(i).getCell(j).setCellValue(String.valueOf(i-));//
break;
case :
sheet.getRow(i).getCell(j).setCellValue(bean.getXKZH());//
break;
case :
sheet.getRow(i).getCell(j).setCellValue(bean.getSQR());//
break;
case :
sheet.getRow(i).getCell(j).setCellValue(fun.setTimeFormat(bean.getYXQZ()));//
break;
case :
sheet.getRow(i).getCell(j).setCellValue(bean.getZT());//
break;
case :
sheet.getRow(i).getCell(j).setCellValue(bean.getTS());//
break;
}
}
}
try {
workbook.write(out);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public Boolean dqjc_QueryForTz(String jcrq,String jcts,OutputStream out){
        Boolean isSuccess = false;
        String PagesExl = "";
        Connection dbConn = null;
        int iJcts = Integer.parseInt(jcts);//到期提示天数
        try{
            dbConn = ServiceContext.getLandDbConnection();
            KYQGL_Query query = new KYQGL_Query();
            ArrayList arrList = query.kqdqjc_GetQueryItemAll(dbConn,jcrq,iJcts);
            query.ExportExcel(arrList,out);
            isSuccess = true;
        }catch(Exception e){
            logger.error("[导出矿权到期检查报表失败:]" + e);
        }finally{
            ServiceContext.releaseLandDbConnection(dbConn);
        }
        return isSuccess;
}
上面的是java后台方法。
下面是jsp前端页面调用代码(dqjc_QueryResultForTZ.jsp):
<%@ page language="java" pageEncoding="GBK" %>
<%@page import="com.zhongzhi.gis.clientapp.kyqgl.kyqgl.query.KYQGL_DataQuery"%>
<%@page import="java.io.OutputStream"%>
<%
String jcrq = "";//检查日期
jcrq = request.getParameter("jcrq");
jcrq = java.net.URLDecoder.decode(jcrq,"UTF-8");
KYQGL_DataQuery query = new KYQGL_DataQuery();
String fileName = "矿权到期检查.xls";
OutputStream os = null;
try{
//设置文件头
response.setContentType("application/msexcel");
response.setHeader("Content-Disposition","attachment;filename=" + new String(fileName.getBytes("GB2312"),"ISO-8859-1") + ";");
out.clear();
out=pageContext.pushBody();
os = response.getOutputStream();
query.dqjc_QueryForTz(jcrq,"30",os);//设置到期提醒天数为30天
os.flush();
}catch(Exception e){
System.out.println(e);
}
%>
触发导出excel时不能使用ajax,可以使用下面方法代替之:
function query_dqjc_dataForTz(){
    var jcrq = $("#dcjcrq").val();
    var url =  "pages/kyqgl/kyqgl/util/dqjc_QueryResultForTZ.jsp?jcrq="+jcrq;
    window.location.href = url;
}
POI导出excel并下载(以流的形式在客户端下载,不保存文件在服务器上)的更多相关文章
- POI导出EXCEL经典实现
		
1.Apache POI简介 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程式对Microsoft Office格式档案读和写的功能. .NET的开发人员则 ...
 - Java POI 导出EXCEL经典实现 Java导出Excel
		
转自http://blog.csdn.net/evangel_z/article/details/7332535 在web开发中,有一个经典的功能,就是数据的导入导出.特别是数据的导出,在生产管理或者 ...
 - java中使用poi导出excel表格数据并且可以手动修改导出路径
		
在我们开发项目中,很多时候会提出这样的需求:将前端的某某数据以excel表格导出,今天就给大家写一个简单的模板. 这里我们选择使用poi导出excel: 第一步:导入需要的jar包到 lib 文件夹下
 - POI导出EXCEL经典实现(转)
		
http://www.cnblogs.com/xwdreamer/archive/2011/07/20/2296975.html 1.Apache POI简介 Apache POI是Apache软件基 ...
 - Java之POI导出Excel(一):单sheet
		
相信在大部分的web项目中都会有导出导入Excel的需求,今天我们就来看看如何用Java代码去实现 用POI导出Excel表格. 一.pom引用 pom文件中,添加以下依赖 查看代码 <!-- ...
 - 重构:以Java POI 导出EXCEL为例
		
重构 开头先抛出几个问题吧,这几个问题也是<重构:改善既有代码的设计>这本书第2章的问题. 什么是重构? 为什么要重构? 什么时候要重构? 接下来就从这几个问题出发,通过这几个问题来系统的 ...
 - 重构:以Java POI 导出EXCEL为例2
		
前言 上一篇博文已经将一些对象抽象成成员变量以及将一些代码块提炼成函数.这一节将会继续重构原有的代码,将一些函数抽象成类,增加成员变量,将传入的参数合成类等等. 上一篇博文地址:http://www. ...
 - 使用Apache POI导出Excel小结--导出XLS格式文档
		
使用Apache POI导出Excel小结 关于使用Apache POI导出Excel我大概会分三篇文章去写 使用Apache POI导出Excel小结--导出XLS格式文档 使用Apache POI ...
 - 使用POI导出excel基础篇
		
最近搞了下POI导出Excel,听说很多次,却是第一次搞. 在pom.xml中引入依赖 <dependency> <groupId>org.apache.poi</gro ...
 
随机推荐
- JSP编译成Servlet(三)JSP编译后的Servlet
			
JSP编译后的Servlet类会是怎样的呢?他们之间有着什么样的映射关系?在探讨JSP与Servlet之间的关系时先看一个简单的HelloWorld.jsp编译成HelloWorld.java后会是什 ...
 - 极光推送iOS SDK教程
			
iOS SDK 调试指南 iOS 调试思维导图 2 确认证书 请到"应用详情页面"确认证书可用性: 3 开发环境测试 在对 JPush iOS 开发环境进行测试前,请确保 3 个 ...
 - 用javah 导出类的头文件, 常见的错误及正确的使用方法
			
******************************************************************************** 用javah 导出类的头文件, 常见的 ...
 - iOS中关于UIApplication的详细介绍
			
UIApplication 什么是UIApplication? UIApplication对象是应用程序的象征.每一个应用都有自己的UIApplication对象,这个对象是系统自动帮我们创建的, 它 ...
 - LeetCode之“树”:Balanced Binary Tree
			
题目链接 题目要求: Given a binary tree, determine if it is height-balanced. For this problem, a height-balan ...
 - java 多线程和线程池
			
● 多线程 多线程的概念很好理解就是多条线程同时存在,但要用好多线程确不容易,涉及到多线程间通信,多线程共用一个资源等诸多问题. 使用多线程的优缺点: 优点: 1)适当的提高程序的执行效率(多个线程同 ...
 - Shell编程入门(第二版)(下)
			
... ... command n done #select把关键字中的每一项做成类似表单,以交互的方式执行do和done之间的命令 示例-select.sh [python] view plainc ...
 - ActiveMQ系列之五:ActiveMQ的Transport
			
连接到ActiveMQ Connector:ActiveMQ提供的,用来实现连接通讯的功能.包括:client-to-broker.broker-to-broker. ActiveMQ允许客户端使用多 ...
 - Database Initialization Parameters for Oracle E-Business Suite Release 12
			
In This Document Section 1: Common Database Initialization Parameters For All Releases Section 2: Re ...
 - C语言之linux内核实现平方根计算算法
			
关于平方根的计算,在linux内核中也有实现,就像math.h数学库里的sqrt这个函数一样. 平方根的公式定义: 如果一个非负数x的平方等于a,即 , ,那么这个非负数x叫做a的算术平方 ...