项目中实现的代码:

一.
//controller
@RequestMapping(value = "/exportAccountManager")
public void exportAccountManager(HttpServletRequest request, HttpServletResponse response,
@RequestParam String fileName, String orgNo, String consNo, String consName, Integer consState) {
String templateFileName = request.getSession().getServletContext().getRealPath("/") + "resources/templates/"
+ fileName;
try (InputStream input = new BufferedInputStream(new FileInputStream(templateFileName));
OutputStream output = response.getOutputStream();) {
Map<String, Object> params = buildParam(orgNo, consNo, consName, consState);
List<AccountManagerModel> dataList = accountManagerService.queryAccountManagerList(params);
CommonUtils.exportExcel(response, fileName, "客户清单.xls", input, output, dataList);
} catch (Throwable ex) {
LOGGER.error("导出客户清单失败:", ex);
}
} //参数
private Map<String, Object> buildParam(String orgNo, String consNo, String consName, Integer consState) {
Map<String, Object> params = new HashMap<String, Object>();
CommonUtils.addOrgParam(orgNo, commonService, params);
params.put("consNo", consNo);
params.put("consName", consName);
params.put("consState", consState);
return params;
}
二.工具类中导出相关
public static void exportExcel(HttpServletResponse response, String fileName, String cnFileName, InputStream input,
OutputStream output, List<?> dataList) throws IOException {
cnFileName = URLEncoder.encode(cnFileName, StandardCharsets.UTF_8.name());
response.setHeader("Content-Disposition", "attachment;filename=" + cnFileName);
response.setContentType("application/vnd.ms-excel");
Map<String, Object> params = new HashMap<String, Object>();
params.put("dataList", dataList);
exportExcel(input, output, params);
output.flush();
} public static void exportExcel(InputStream is, OutputStream os, Map<String, Object> params) throws IOException {
Context context = PoiTransformer.createInitialContext();
if (MapUtils.isNotEmpty(params)) {
Iterator<Map.Entry<String, Object>> iterator = params.entrySet().iterator();
while (iterator.hasNext()) {
Map.Entry<String, Object> entry = iterator.next();
context.putVar(entry.getKey(), entry.getValue());
}
}
JxlsHelper jxlsHelper = JxlsHelper.getInstance();
Transformer transformer = jxlsHelper.createTransformer(is, os);
JexlExpressionEvaluator evaluator = (JexlExpressionEvaluator) transformer.getTransformationConfig()
.getExpressionEvaluator();
evaluator.getJexlEngine().setSilent(true); // 设置静默模式,不报警告 // 函数强制,自定义功能
Map<String, Object> funcs = new HashMap<String, Object>();
funcs.put("utils", new JxlsUtils());
evaluator.getJexlEngine().setFunctions(funcs); // 必须要这个,否者表格函数统计会错乱
jxlsHelper.setUseFastFormulaProcessor(false).processTemplate(context, transformer);
} 三.service
@Override
public List<AccountManagerModel> queryAccountManagerList(Map<String, Object> params) throws Exception {
return accountManagerMapper.queryAccountManagerList(params);
} //service接口
public List<AccountManagerModel> queryAccountManagerList(Map<String, Object> params) throws Exception;
四.mapper
//mapper接口
public List<AccountManagerModel> queryAccountManagerList(Map<String, Object> params) throws Exception;
////mapper映射xml
<select id="queryAccountManagerList" parameterType="java.util.Map" resultMap="AccountManagerResultMap">
select
a.cons_id,
a.cons_no,
a.cons_name,
a.cons_address,
a.legal_person,
a.legal_person_phone,
a.bill_person,
a.bill_person_phone,
a.electric_person,
a.electric_person_phone,
a.entrusted_person,
a.entrusted_person_phone,
a.cons_state,
a.org_no,
b.org_name
from be_cons_info a, o_org b
where a.org_no = b.org_no
<if test="orgNo != null and orgNo != ''">
and FIND_IN_SET(a.org_no, #{orgNo})
</if>
<if test="consNo != null and consNo != ''">
and a.cons_no like concat('%', #{consNo}, '%')
</if>
<if test="consName != null and consName != ''">
and a.cons_name like concat('%', #{consName}, '%')
</if>
<if test="consState != null">
and a.cons_state = #{consState}
</if>
<if test="powerCompany != null and powerCompany != ''">
and b.org_name like concat('%', #{powerCompany}, '%')
</if>
</select>

五.前端Html

<div class="tool_wrapper">
<button class="ui-btn ui-btn-primary" onclick="addAccountManager();">新增</button>
<button class="ui-btn ui-btn-primary left20" onclick="editAccountManager();">修改</button>
<!-- <button class="ui-btn ui-btn-primary left20" onclick="cancelAccountManager();">注销</button> -->
<button class="ui-btn ui-btn-primary left20 fileinput-button">
<span>导入Excel</span>
<input id="fileupload" type="file" name="file" accept="application/vnd.ms-excel">
</button>
<button class="ui-btn ui-btn-primary left20" onclick="exportXls()">导出Excel</button>
<button class="ui-btn ui-btn-primary left20" onclick="downloadXlsTemplate()">下载模板</button>
</div>

六.js

function exportXls() {
var params = getSearchTableParams();
var url = getUrl("accountManager/exportAccountManager?fileName=cons.xls", params, true);
window.location.href = basePath + url;
}
/**
* 获取查询表格参数
* @returns Array
*/
function getSearchTableParams() {
var params = [];
$(".search_table input,.search_table select").each(function () {
var _this = $(this);
params.push({
name: _this.attr('name'),
value: _this.val()
});
});
return params;
} /**
* 获取URL
*
* @param url URL
* @param params URL参数
* @param urlContainParam URL是否包含参数,默认不含参数
* @returns
*/
function getUrl(url, params, urlContainParam) {
if (params == null || params.length == 0)
return url;
if (urlContainParam == null)
urlContainParam = false;
var arr = [url];
$(params).each(function (i, e) {
if (i == 0 && urlContainParam == false) {
arr.push("?" + e.name + "=" + e.value);
} else {
arr.push("&" + e.name + "=" + e.value);
}
});
return arr.join('');
}

Java实现导出Excel的更多相关文章

  1. 重构:以Java POI 导出EXCEL为例

    重构 开头先抛出几个问题吧,这几个问题也是<重构:改善既有代码的设计>这本书第2章的问题. 什么是重构? 为什么要重构? 什么时候要重构? 接下来就从这几个问题出发,通过这几个问题来系统的 ...

  2. java 实现导出Excel文件

    java 实现导出Excel(java生成 excel 并导出文件) 经常有有一些数据需要导出成   excel  格式 ,所以就需要实现啦 开始: 1.加入jar poi-3.6-20091214. ...

  3. java后端导出excel

    最近工作中需要导出excel.这次机智一点做个笔记,顺便写了一个比较通用的工具类.自然目前不能生成java实体类属性嵌套多次的这种没办法导出了,后续有需要的时候我再改改. 首先,java后端导出exc ...

  4. java:POI导出excel

    POI是一个开源项目,专用于java平台上操作MS OFFICE,企业应用开发中可用它方便导出Excel. 下面是使用示例: 1.maven中先添加依赖项 <dependency> < ...

  5. Java POI 导出EXCEL经典实现 Java导出Excel

    转自http://blog.csdn.net/evangel_z/article/details/7332535 在web开发中,有一个经典的功能,就是数据的导入导出.特别是数据的导出,在生产管理或者 ...

  6. java导入导出excel常用操作小结及简单示例

    POI中常用设置EXCEL的操作小结: 操作excel如下 HSSFWorkbook wb = new HSSFWorkbook();  //创建一个webbook,对应一个Excel文件 HSSFS ...

  7. [ExtJS5学习笔记]第三十四节 sencha extjs 5 grid表格之java后台导出excel

    继上次使用js前端导出excel之后,还有一个主要大家比较关注的是后台实现导出excel,因为本人开发使用的java所以这里使用apache的开源项目poi进行后台excel的导出. 本文目录 本文目 ...

  8. 重构:以Java POI 导出EXCEL为例2

    前言 上一篇博文已经将一些对象抽象成成员变量以及将一些代码块提炼成函数.这一节将会继续重构原有的代码,将一些函数抽象成类,增加成员变量,将传入的参数合成类等等. 上一篇博文地址:http://www. ...

  9. 【转载】Java导入导出excel

    转自:https://blog.csdn.net/jerehedu/article/details/45195359 目前,比较常用的实现Java导入.导出Excel的技术有两种Jakarta POI ...

  10. Java POI导出Excel不弹框选择下载路径(下载文件不选择下载路径,默认) Chrome

    在Chrome浏览器中,Java导出Excel文件时,浏览器弹出提示框,需要选择下载路径 在Chrome中的高级设置中,把“下载前询问每个文件的保存位置”去掉就解决了 DEEPLOVE(LC)

随机推荐

  1. Special Forms and Syntax Sugars in Clojure

    (...): function literals, p40, 64; '(...): suppress evaluation, p24; _(...): comments, p18; ".. ...

  2. Git (10)-- 打标签(git tag)

    @ 目录 1.列出标签 2.创建标签 2.1.附注标签 2.2.轻量标签 3.后期打标签 4.共享标签 5.删除标签 6.检出标签 超详细 Git 图文版小白教程(持续更新) 像其他版本控制系统(VC ...

  3. nc基本操作&反弹shell

    一.nc简介 nc 被称为瑞士军刀netcat ,所做的就是在两台电脑之间建立链接,并返回两个数据流. 可运行在TCP或者UDP模式,添加参数 -u 则调整为UDP,默认为TCP 即可用在window ...

  4. 我的微服务之路,看我搭建dapr趟过的坑

    前言 自从上周看了一个Dapr的视频,知道原来自己离微服务很近,简直触手可及. 心痒痒好久了,不动手实践验证一下简直是寝食难安.先是看官网的文档,可能是因为被墙了,有些网址是不能访问的,那安装搭建环境 ...

  5. noip23

    T1 好吧,题目很sb,描述告诉你序列无限长,输入格式里告诉你m为序列长度,我:????,选择了相信后者.然后连暴力都挂分,可恶 这题一看就是个毒瘤数据结构题,思索了一下,发现就是个线段树,但我又想到 ...

  6. NOIP 模拟 $28\; \rm 割海成路之日$

    题解 \(by\;zj\varphi\) 用两个集合分别表示 \(1\) 边联通块,\(1,2\) 边联通块 . \(\rm son_x\) 表示当前节点通过 \(3\) 类边能到的 \(2\) 联通 ...

  7. 题解 [NOIP2017 提高组]宝藏

    传送门 这是蓝书上状压的例题啊,怎么会出现在模拟赛里 不过就算原题我也没把握写对 核心思路: 先令\(dp[s]\)为当前状态为\(s\)时的总花费最小值,\(cnt[s][i]\)为这个方案中由根节 ...

  8. 0x800b010a 证书

    无论是装微软的什么应用,只要报这个错误,下载这个证书: http://download.microsoft.com/download/2/4/8/248D8A62-FCCD-475C-85E7-6ED ...

  9. 如何修改leaflet的marker图标

    1. 从官网中查看对应文档:https://leafletjs.com/ 2. 3. var greenIcon = L.icon({ iconUrl: 'leaf-green.png', shado ...

  10. Inject-APC(Ring0)

    1 #include "stdafx.h" 2 #include <iostream> 3 #include <Windows.h> 4 #include ...