JAVA 导出 Excel, 将Excel下载到本地
昨天说了如何将数据导出成 excel 的两种方式,今天完善一下将 java 导出(文件在服务器)并下载到本地
1. 触发导出 ajax 代码
$.ajax({
type: "POST",
url: "${ctx}/website/clsecurity/XXXXXAction_exportUserinfoData.do",
async: false,
dataType: "json",
data: {
"province": province,
"userType": userType,
"startDate": startDate,
"endDate": endDate
},
success: function(data) {
var json = eval( '(' + data + ')' );
window.open("${ctx}" + json.url);
}
});
2. 处理导出的方法代码片段
List<ClUserinfo> regUsers = clSecurityService.findClUserinfos(clSecurityForm);
List<TempUser> userList = new ArrayList<TempUser>();
for (ClUserinfo userinfo : regUsers) {
TempUser user = new TempUser();
user.setUserName(userinfo.getUserName());
user.setUserType(userinfo.getUserType());
user.setCompany(userinfo.getCompany());
user.setKeshi(userinfo.getKeshi());
user.setProvince(userinfo.getProvince());
user.setCreatedDate(userinfo.getCreatedDate());
user.setCreateDateStr(userinfo.getCreatedDate().toString());
userList.add(user);
}
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet("注册用户表");
HSSFRow row = sheet.createRow((int) 0);
HSSFCellStyle style = wb.createCellStyle();
style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
HSSFCell cell = row.createCell((short) 0);
cell.setCellValue("姓名");
cell.setCellStyle(style);
cell = row.createCell((short) 1);
cell.setCellValue("专委会");
cell.setCellStyle(style);
cell = row.createCell((short) 2);
cell.setCellValue("单位");
cell.setCellStyle(style);
cell = row.createCell((short) 3);
cell.setCellValue("科室");
cell.setCellStyle(style);
cell = row.createCell((short) 4);
cell.setCellValue("注册日期");
cell.setCellStyle(style);
for (int i = 0; i < userList.size(); i++) {
row = sheet.createRow((int) i + 1);
TempUser user = (TempUser) userList.get(i);
row.createCell((short) 0).setCellValue(user.getUserName());
row.createCell((short) 1).setCellValue(user.getUserType());
row.createCell((short) 2).setCellValue(user.getCompany());
row.createCell((short) 3).setCellValue(user.getKeshi());
row.createCell((short) 4).setCellValue(user.getCreateDateStr());
}
try {
String fileName = "RegistUserList-" + new SimpleDateFormat("yyyyMMddhhmmss").format(new Date()) + ".xls";
String savaPath = ServletActionContext.getRequest().getRealPath("/upload/excel");
FileOutputStream fos = new FileOutputStream(savaPath + "\\" + fileName);
wb.write(fos);
fos.close();
Map<String,String> map = new HashMap<String,String>();
map.put("url", "/upload/excel/" + fileName);
JSONObject json = JSONObject.fromObject(map);
this.result = json.toString();
} catch (Exception e) {
e.printStackTrace();
}
3. result 装返回结果
/**
* json return
*/
private String result; public String getResult() {
return result;
}
public void setResult(String result) {
this.result = result;
}
4. XXXXXAction_XXXXXXX 方法以及 result 在 struts2 的配置
<action name="XXXXXAction_exportUserinfoData" class="com.gzewell.ucomweb.web.security.action.XXXXXAction" method="exportUserinfoData">
<result name="success" type="json">
<param name="root">result</param>
</result>
</action>
说明:
fos:文件输出流,将文件放在服务器的 /upload/excel 目录
result: 将路径放入map 结果以 json 的形式返回
window.open:打开新的页面,即为需要下载的文件在服务器的位置
${ctx}: 为服务器地址ip | 网址的表达式 (127.0.0.1)
JAVA 导出 Excel, 将Excel下载到本地的更多相关文章
- 通过Java HTTP连接将网络图片下载到本地
通过Java HTTP连接将网络图片下载到本地 只知道浏览器使用的是HTTP协议,那么如何将网络资源使用JavaHTTP下载下来呢! 这只是一个非常简单的小示例,只是不想每次碰到关于此方面的内容忘 ...
- Java 导出大批量数据excel(百万级)(转载)
参考资料:http://bbs.51cto.com/thread-1074293-1-1.html http://bbs.51cto.com/viewthread.ph ...
- POI Java 导出数据到Excel
<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifac ...
- JAVA导出数据到excel中大数据量的解决方法
最近在做项目功能时 ,发现有20万以上的数据.要求导出时直接导出成压缩包.原来的逻辑是使用poi导出到excel,他是操作对象集合然后将结果写到excel中. 使用poi等导出时,没有考虑数据量的问题 ...
- java导出和读取excel数据
使用的是poi的jar包 下载地址http://poi.apache.org/download.html 主要是把jar包导入,直接新建一个列子测试一下就明白了.使用起来还是比较方便的,代码里面的原理 ...
- java导出数据到excel里:直接导出和导出数据库数据
一.直接导出 package com.ij34.util; import java.io.FileNotFoundException; import java.io.FileOutputStream; ...
- Java导出数据生成Excel表格
事先准备: 工具类: package com.wazn.learn.util.export; import java.sql.Connection; import java.sql.DriverMan ...
- 【转】java导出多个excel表格,并压缩成zip输出
转自:http://blog.csdn.net/qq_14861089/article/details/53169414 感谢作者分享 /** * 导出支付宝批量支付文件excel * * @p ...
- Java导出数据为EXCEL的两种方式JXL和POI
JXL和POI导出数据方式的比较 POI支持excel2003和2007,而jxl只支持excel2003. 下面为测试代码: public class TestCondition { /** * 生 ...
- python 生成excel,并下载到本地
from django.shortcuts import reverse,redirect,render from operations import models import xlwt impor ...
随机推荐
- 【C++】C++中的虚函数与纯虚函数
C++中的虚函数 先来看一下实际的场景,就很容易明白为什么要引入虚函数的概念.假设我们有一个基类Base,Base中有一个方法eat:有一个派生类Derived从基类继承来,并且覆盖(Override ...
- 查看sql server数据库连接数的三种方法
怎样才能查看sql server数据库连接数呢?下面就将为您介绍三种查看的方法,供您参考,希望能够帮助到您. 1.通过系统的“性能”来查看:开始->管理工具->性能(或者是运行里面输入 m ...
- spring注入是否会被回收
在做jms的时候,调用到其他的接口来进行数据库操作. 如果不进行数据库操作的话,jms信息队列都是正常的.但是用的spring注入的接口进行操作的时候,当信息较多的时候,注入的这个接口会变成null. ...
- Swiper使用方法(向前和向后按钮在swiper-container外面)
Swiper插件的使用 1.HTML <!-- Swiper --> <section class="swipper"> <div class=&qu ...
- .NET在IE10下的回传BUG修复
以前我也没注意到,直到有次公司新配了台机器做测试服务器,在测试过程中意外发现凡是涉及PostBack的操作仅在IE10下都无效,其他版本浏览器都没有问题,本机调试也没有问题. 这也就是说在程序相同的情 ...
- 浏览器拦截跨域请求处理方法(同源策略不允许读取XXX上的远程资源)
直接了当了说,解决此类问题,最直接的方法就是,就是给被请求的服务器,添加HTTP头响应头,这里提供两种添加HTTP头的方法: 第一种,就是在程序中添加HTTP头: Response.AddHeader ...
- Miniprofiler在swagger、vue、angular中的使用
本篇分为以下几个部分: 1.Swagger的简单应用 2.Miniprofier的后台配置 3.跨域配置 4.在angular中显示Miniprofier 5.在vue中显示Miniprofier ...
- VS2017按F1使用中文帮助
VS2017使用时,按F1出来在线英文帮助,可以稍作改动,出来中文帮助. 1.进入安装文件,选择单个组件,勾选Help Viewer. 2.安装完成后,在IDE中选择在线查看器中启动.
- 【cocos2d-x 3.0-Mac配置篇】
就在昨天触控正式发布了3.0正式版本... 在这个喜大普奔的日子里,我们又开始了新一轮的革命,先不说其他的,再来看看3.0目录文件里面有什么? 首先是精简了很多,无论是从目录结构,和所用到的工具类,都 ...
- const的详解
1.const的成员变量 常成员变量的值不能被更新,将在构造函数时候进行初始化 2.const的成员函数 常成员函数只能调用常成员函数,常成员函数不能修改任何成员变量的数值 3.const的成员对象 ...