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 ...
随机推荐
- oracle中去重复记录 不用distinct
用distinct关键字只能过滤查询字段中所有记录相同的(记录集相同),而如果要指定一个字段却没有效果,另外distinct关键字会排序,效率很低 . select distinct name fro ...
- Linux0.11进程分配时间片的策略
想知道内核什么时候给进程重新分配时间片,最好的办法就是阅读源代码(其中已经打了注释) /******************************************************** ...
- 【leetcode79】Single Number III
题目描述: 给定一个数组,里面只有两个数组,只是出现一次,其余的数字都是出现两次,找出这个两个数字,数组形式输出 原文描述: Given an array of numbers nums, in wh ...
- Leetcode_28_Implement strStr
本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/41452047 Implement strStr(). Re ...
- python is not None
python 判空常用 XX is not None,但其实 not XX is None 也可以. http://stackoverflow.com/questions/2710940/pyth ...
- 【Android 应用开发】Android 网络编程 API笔记 - java.net 包 权限 地址 套接字 相关类 简介
Android 网络编程相关的包 : 9 包, 20 接口, 103 类, 6 枚举, 14异常; -- Java包 : java.net 包 (6接口, 34类, 2枚举, 12异常); -- An ...
- jsp中的路径与跳转
在jsp(serlvet)中,页面的"变换"有两种方式,第一重定向,第二转发: 先说重定向,它的调用方式是这样的 response.sendredirect("uri&q ...
- Leetcode_122_Best Time to Buy and Sell Stock II
本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/43155725 Say you have an array ...
- Oracle Service Bus白皮书
Oracle Service Bus简介 面对变幻莫测的市场需求的变化,企业希望通过推进"服务化"提高敏捷性和响应能力:更方便地与客户和合作伙伴交互,更灵活地设计和构建IT基础架构 ...
- 【一天一道LeetCode】#11Container With Most Water
一天一道LeetCode系列 (一)题目 Given n non-negative integers a1, a2, -, an, where each represents a point at c ...