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 ...
随机推荐
- Spring BeanFactory getBean 源码剖析
首先看一张时序图 最开始,一切都来自这里: public static void main(String[] args) { ApplicationContext context = new Clas ...
- TCP/IP滑动窗口
T C P使用一种窗口(w i n d o w)机制来控制数据流.当一个连接建立时,连接的每一端分配一个缓冲区来保存输入的数据,并将缓冲区的尺寸发送给另一端.当数据到达时,接收方发送确认,其中包含了自 ...
- Dynamics CRM 2011/2013 DeveloperToolkit的使用
Dynamic CRM 2011的SDK中提供了一个叫DeveloperToolkit的工具,他的用途官方说明说的很明确,能方便开发者在VS中直接部署webresource.plugin.workfl ...
- android Timer与TimerTask的相关操作
项目上面的部分操作需要使用到定时器进行周期性的控制.网络上面对于定时器的操作通常有三种实现方法. 我是通过Timer与TimerTask相结合实现的定时器功能.具体实现过程如下: 第一步,得到Time ...
- HTTPSQS 队列
http://blog.csdn.net/21aspnet/article/details/7467812 http://hi.baidu.com/caoxin_rain/item/5282770cd ...
- zookeeper+kafka集群安装之二
zookeeper+kafka集群安装之二 此为上一篇文章的续篇, kafka安装需要依赖zookeeper, 本文与上一篇文章都是真正分布式安装配置, 可以直接用于生产环境. zookeeper安装 ...
- RPi Kernel Compilation
Overview This page explains how to rebuild the kernel image for the RPi. There are two possible rout ...
- 如何在VS2013中进行Boost单元测试
对于如何在VS2013中进行Boost单元测试,这方面资料太少.自己也因此走了不少弯路.下文将会阐述一下如何在VS2013中进行Boost单元测试. 在开始Boost单元测试之前,我们需要先安装VS2 ...
- android4.2添加重启菜单项
本文主要是针对android4.2关机菜单添加重启功能 A.关机提示 android4.2/frameworks/base/policy/src/com/android/internal/policy ...
- EBS R12安装升级(FRESH)(一)
from:http://nufeng.net/ebs-r12-fresh-installation-and-upgrades/ 文章目录[隐藏] 1 EBS安装前准备 1.1 硬件 1.2 虚拟机vm ...