文档章节

jxl 、 apache.poi.hssf 实现本地, 服务器断的下载

QH_C
 QH_C
发布于 2015/03/01 23:10
字数 992
阅读 23
收藏 0
点赞 0
评论 0
jxl 实现下载:

package com.inspur;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;
/*  jxl 实现下载  */
/**
 *@author  WHD
 *2014-11-15
 */
public class JxlOut {
public static void main(String[]args) throws IOException, RowsExceededException, WriteException{
File file= new File("I:/TESTfxl.xls");
//如果不是从服务器下载到本地则输出流不用File方式而使用resonance.getOutPutStream()方式获取输出流就ok了 
//使用 OutputStream output=response.getOutputStream()来代替,
//FileOutPutStream这样我们就不用提前来写路径,也就是可以直接下载到客户端选择的路径下
FileOutputStream  output= new FileOutputStream(file);
WritableWorkbook wwb = Workbook.createWorkbook(output);//创建工作簿
WritableSheet ws = wwb.createSheet("Sheet1", 0);//创建工作sheet页        
// 将具体数据添加到具体页面,而这里的赋值可以使用循环将数据库中
//取出的数据 全都添加到sheet中 如果数据多的话还可以使用多个sheet
// sheet 就是 excel中的一页
Label labelC = new Label(0, 0, "jxltest");
ws.addCell(labelC);
// 写出到指定的流中
wwb.write();
// 关闭物理资源
wwb.close();
output.flush();
output.close();
}
}
/* apache.poi.hssf HSSFWorkBook 实现下载  */
/**
 * excel 模板下载  实际项目中使用到的下载
 */
 
@RequestMapping(value = "downExcelTemplate")
public void downExcelTemplate(HttpServletResponse response) {
// 获取元数据id 在获取数据个数形成excel 模板
String meta_id = this.getPara("meta_id");
// 获取对应数据源对应的表的字段属性
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
// 这里获取的也就是item_def中 def_id=meta_id的name_cn,形成excel模板
list = datamanagerService.findItemById(meta_id);
// Map<String,Object> datas=new HashMap<String,Object>();
int i = 0;
// 将list中的值进行导出
try {
// 创建一个Excel文件
HSSFWorkbook workbook = new HSSFWorkbook();
// 创建一页
HSSFSheet sheet = workbook.createSheet();
// 创建一行
HSSFRow row = sheet.createRow(0);
// 创建一列
HSSFCell cell = null;
// 遍历向excel中赋值
for (Map<String, Object> data : list) {
cell = row.createCell(i);
cell.setCellValue((String) data.get("name_cn"));
++i;
}
 
// 生成excel
// 在从服务器的目录下进行下载
// 下载文件名
String fileName = "ExcelTemplate.xls";
response.reset();
response.setContentType("application/x-download");
response.addHeader("Content-Disposition", "attachment;filename="
+ fileName);
// 这样写在下载的时候会让你选择路劲,而如果使用
// OutputStream os= new FileOutputStream("G:"+File.separator+"test.java");
// 来代替os则就是本地下载
OutputStream os = response.getOutputStream();
workbook.write(os);
os.flush();
os.close();
} catch (Exception e) {
e.printStackTrace();
}
}

上面的两个都是将数据库中的数据组装成excel 的格式,并进行下载,怎么让他下载,或者说用何种方式来请求下载资源,方式有如下两种。

1、使用ajax异步请求将数据使用 response 的OutputStream来将数据输出到本地。

2、使用同步方式,有两种一种是使用form的button 来提交请求参数,另一种是使用window.location.href="Test?name=123&password=6789";这种方式来请求,两种方式都可以。

注意: 这里说一下使用“2” 中的同步方式是不会刷新现有页面的,因为他没有向该页面返回数据而是下载到了本地磁盘,所以现有页面不会被刷新。

上面我们看了两大种方式来实现,其实ajax方式是不能实现的,那是因为response原因,一般请求浏览器是会处理服务器输出的 response,例如生成png,文件下载等,ajax请求只是个“字符性”的请求,可以读取到返回的response,但只是读取而已,是无法执行的,说白点就是js无法调用到浏览器的下载处理机制和程序

这样看来只有第二种方式能直接实现下载了,但是第二种方式中使用哪一种那,建议使用form 的submit提交方式来实现,这样的话我们提交的参数是安全的而使用window.location.href="test?name=name&password=123" 这样的话参数直接暴露了所以建议使用form 的submit() 方式来实现。

下面来看看"2" 中的两种方式,写个小demo 如下:

1、form的submit() 方式实现:

function _excel(){

var mfrm=document.frm;

mfrm.action="Test";

mfrm.submit();

return true;

};

2、使用window.location.href=""方式实现:

function excel_(){

window.location.href="Test?name=123&password=6789";

}

 

© 著作权归作者所有

共有 人打赏支持
QH_C
粉丝 1
博文 30
码字总数 69153
作品 0
朝阳
程序员
JXL导入导出EXCEL

web项目中实现客户端导出Excel文件并下载 JXL下载地址:http://www.andykhan.com/jexcelapi/download.html 下载后,将JXL的包引入到web项目中,在项目中,可以写一个公共的类做为专门导出Exc...

长平狐 ⋅ 2012/10/25 ⋅ 0

使用java读取Excel表格中的数据 ,解决方案搜集

Java EXCEL API简介 Java Excel是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容、创建新的Excel文件、更新已经存在的Excel文件。使用该API非Windows操作系统也可以通过纯Java应...

不最醉不龟归 ⋅ 2016/11/01 ⋅ 0

java处理excel的一点实践积累

java处理excel的一点实践积累 作者:佟亮 日期:2008-11-06 1 文档说明 目的:编写本文档主要的目的是与大家分享下如何用java处理excel,文档中的代码一部分来自《企业项目管理系统V2.0》的源...

tongliang4444 ⋅ 2016/08/11 ⋅ 0

基于Spring Mvc实现的Excel文件上传下载

最近工作遇到一个需求,需要下载excel模板,编辑后上传解析存储到数据库。因此为了更好的理解公司框架,我就自己先用spring mvc实现了一个样例。 基础框架 之前曾经介绍过一个最简单的sprin...

青夜之衫 ⋅ 2017/12/05 ⋅ 0

Grails示例程序-导出Excel文档

程序只有一个页面,点击下载链接,下载Excel文档,该文档有两个sheet,这两个sheet和里面的内容是使用JExcelApi生成的。 显示下载页面 增加一个下载页面的controller和view SampleExcelContr...

寡鸡蛋 ⋅ 2014/01/17 ⋅ 1

用java读/写带公式的excel的问题

有一个公式逻辑很复杂的excel,现在想在页面上做成自动的,就是从页面上得到的一些值通过poi或者jxl给写进excel里,然后通过那些公式的计算,再从excel里把结果取出来,避免以前那样要自己手...

迪波威 ⋅ 2011/06/01 ⋅ 6

JAVA EXCEL API详解

使用Windows操作系统的朋友对Excel(电子表格)一定不会陌生,但是要使用Java语言来操纵Excel文件并不是一件容易的事。在Web应用日益盛行的今天,通过Web来操作Excel文件的需求越来越强烈,目...

刘学炜 ⋅ 2012/06/10 ⋅ 2

JXL GC 问题探讨

最近在一个项目中采用JXL做excel导出的功能,但是项目上线后时不时的出现服务器CPU使用率达到99%的问题。查来查去发现问题尽然出在JXL导出excel上。后来通过Google搜索发现JXL会强制调用Sys...

felixlv ⋅ 2013/05/16 ⋅ 0

查询阿里云存储文件并导出excle 保存到本地

说明:怎么样读取阿里云服务器的文件并导出到本地excle 来统计阿里云存放多少文件呢?下面的代码详细给你介绍: package util; import java.io.File; import java.io.FileNotFoundException; ...

javaVSandroid ⋅ 2017/03/15 ⋅ 0

SpringMVC,EasyUI,MyBatis通用导出EXCEL方案求解

本人想实现,通用的基于SpringMVC,EasyUI,MyBatis的EXCEL方案。SpringMVC,REST风格URL,MyBatis使用mapper方式,使用Spring注解。 所有EasyUI datagrid查询对应的都是@ResponseBody方式返回...

小伙伴新手上路 ⋅ 2013/09/27 ⋅ 2

没有更多内容

加载失败,请刷新页面

加载更多

下一页

R计算IV

参考文章 #读取文件 rawdata = read.csv("/path/to/csv/file",header=T) colnames(rawdata)[18] <- "y" //重命名因变量y #数据分区 训练集测试集 trainIdx <- sample(nrow(rawdata), round(......

火力全開 ⋅ 9分钟前 ⋅ 0

SQL老司机,在SQL中计算 array & map & json数据

摘要: 场景 通常,我们处理数据,一列数据类型要么是字符串,要么是数字,这些都是primitive类型的数据。 场景 通常,我们处理数据,一列数据类型要么是字符串,要么是数字,这些都是primi...

阿里云云栖社区 ⋅ 9分钟前 ⋅ 0

SQL老司机,在SQL中计算 array & map & json数据

摘要: 场景 通常,我们处理数据,一列数据类型要么是字符串,要么是数字,这些都是primitive类型的数据。 场景 通常,我们处理数据,一列数据类型要么是字符串,要么是数字,这些都是primi...

猫耳m ⋅ 20分钟前 ⋅ 0

关于ireport自定义变量类型为list的时候

自己摸石头过河,我真的应该去趟市中心图书馆,借本真正靠谱的教材 网上的东西,只有0.01%是有用的,还有0.99%是垃圾,剩下的99%是垃圾的复制品。。 哎!~ 问题是这样的,报表带sql,从db中获...

炑炑milina ⋅ 21分钟前 ⋅ 0

Spring mvc ContextLoaderListener 原理解析

对于熟悉Spring MVC功能,首先应从web.xml 开始,在web.xml 文件中我们需要配置一个监听器 ContextLoaderListener,如下。 <!-- 加载spring上下文信息,最主要的功能是解析applicationContex...

轨迹_ ⋅ 21分钟前 ⋅ 0

阿里云发布企业数字化及上云外包平台服务:阿里云众包平台

摘要: 阿里云正式发布旗下众包平台业务(网址:https://zhongbao.aliyun.com/),支持包括:网站定制开发,APP、电商系统等软件开发,商标、商品LOGO、VI、产品包装设计、营销推广、大数据人...

阿里云官方博客 ⋅ 23分钟前 ⋅ 0

Redis安装异常解决办法

官网地址:http://redis.io/ 官网下载地址:http://redis.io/download 1. 下载Redis源码(tar.gz),并上传到Linux 2. 解压缩包:tar zxvf redis-2.8.17.tar.gz 3. 进入解压缩后的文件夹:c...

slagga ⋅ 27分钟前 ⋅ 0

006. 深入JVM学习—年轻代

1. 年轻代图片 年轻代(Young)属于JVM堆内存空间的一个组成部分 所有使用关键字new新实例化的对象一定会在伊甸园区进行保存,而对于存活区保存的一定是已经在伊甸园区存在一段时间并且经过了...

影狼 ⋅ 28分钟前 ⋅ 0

如何成为一个合格的程序员

偶尔的,我会被人问道:如何成为一名优秀的程序员,更或者,如何成为一名程序员。每次人们问起,我都力图给出不同的答案。因此,我的答案是各种各样的。下面就是我认为的成为一名优秀的程序员...

柳猫 ⋅ 29分钟前 ⋅ 0

cups error_log日志暴增

日志内容 File \"/usr/lib/cups/notifier/dbus\" has insecure permissions 解决(未验证适用范围) sudo service cups stopsudo rm /etc/cups/subscriptions.conf*sudo rm -r /var/cac......

一介码夫_Hum ⋅ 33分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部