Java 导出Excel

前台代码:

+ View Code?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<button class="btn btn-sm btn-success" type="submit" id="detailEp" onclick="return exportCheck(true);" forbid="yes">
    <i class="icon-arrow-right bigger-110"></i> 导出
</button>
<br><script>
$(function() {
    var timer = "";
});
//点击导出按钮时禁用导出按钮
$("#myForm").submit(function() {
    $("button[type=submit]",this).attr("disabled","disabled");
    //提交导出后定时去查看有没有导出成功
    timer = setInterval(refrashPg,1000);
})
//导出成功后会放开导出按钮的禁用
function refrashPg() {
    if (getCk() =="1") {
        clearInterval(timer);
        $("#detailEp").removeAttr("disabled");
    }
    delCk();
}
//js获取到cookie
function getCk() {
    debugger
    var ck = document.cookie.split(";");
    var ckname = "";
    for (var i = 0;i<ck.length;i++) {
        var arr = ck[i].split("=");
        if (arr[0] =="updtstatus") {
            ckname = arr[1];
            break;
        }
    }
    return ckname;
}
//js删除掉cookie
function delCk() {
    var exp = new Date();
    var name = "updtstatus";
    exp.setTime(exp.getTime()-1000);
    var cval = getCk();
    document.cookie = name  + "=" + cval + "; expires=" + exp.toGMTString();
}
}
+ View Code?
1
</script>

  后台导出代码就是普通的Java POI代码:

复制代码
 1 public void buildExcelDocument(Map<String, Object> obj,String fileName,String type, 2              HttpServletRequest request, HttpServletResponse response)  3             throws Exception {  4         HSSFWorkbook workbook = new HSSFWorkbook();  5         if ("1".equals(type)) {6             List<Map<String, Object>> contentList =  (List<Map<String, Object>>) obj.get("content");  7             HSSFSheet sheet = workbook.createSheet("sheet1");//创建Excel的版本是2003-2007(xls) 如果需要2010的话,用 XSSFSheet   8             Map<String,String>  titleList = (Map<String, String>) obj.get("title");9             //表头的key 对应内容listMap中的map的key
10             List<String> mkey = new ArrayList<String>();
11             //表头的value 表头
12             List<String> mvalue = new ArrayList<String>();
13             Iterator<Entry<String, String>> it = titleList.entrySet().iterator();
14             while(it.hasNext()){
15                 @SuppressWarnings("rawtypes")
16                 java.util.Map.Entry entry = (java.util.Map.Entry)it.next();
17                 mkey.add((String) entry.getKey());
18                 mvalue.add((String) entry.getValue());
19             }
20             sheet.setDefaultColumnWidth((short) 12);    
21             HSSFCell cell = null;  
22             for (int i = 0;i<mvalue.size();i++) {
23                 cell = getCell(sheet, 0, i);
24                 setText(cell, mvalue.get(i));
25             }
26             
27             for (short i = 0; i < contentList.size(); i++) {    
28                 HSSFRow sheetRow = sheet.createRow(i+1);   
29                 Map<String, Object> entity = contentList.get(i);  
30                 for (int j = 0;j< mkey.size();j++) {
31                         if (entity.get(mkey.get(j)) instanceof String) {
32                             sheetRow.createCell(j).setCellValue((String)entity.get(mkey.get(j)));
33                         } else if (entity.get(mkey.get(j)) instanceof Double) {
34                             sheetRow.createCell(j).setCellValue((Double)entity.get(mkey.get(j)));
35                         } else if (entity.get(mkey.get(j)) instanceof Date){
36                             String date = (entity.get(mkey.get(j))).toString();
37                             sheetRow.createCell(j).setCellValue(date.substring(0, 10));
38                         } else if (entity.get(mkey.get(j)) instanceof BigDecimal){
39                             sheetRow.createCell(j).setCellValue((entity.get(mkey.get(j))).toString());
40                         }
41                     }
42                 }
43             }
44         } else if ("2".equals(type)) {
45             List<String[]> contentList =  (List<String[]>) obj.get("content");  
46             HSSFSheet sheet = workbook.createSheet("sheet1");    
47             String[]  titleList = (String[]) obj.get("title");
48             HSSFCell cell = null;  
49             for (int i = 0;i<titleList.length;i++) {
50                 cell = getCell(sheet, 0, i);
51                 setText(cell, titleList[i]);
52             }
53             for (short i = 0; i < contentList.size(); i++) {    
54                 HSSFRow sheetRow = sheet.createRow(i+1); 
55                 String[] detail = contentList.get(i);
56                 for (int j = 0;j< detail.length;j++) {
57                     sheetRow.createCell(j).setCellValue((String)contentList.get(i)[j]);
58                 }
59             }
60         }
61         
62        //设置下载时客户端Excel的名称     
63         String filename = fileName + ".xls";  
64       //处理中文文件名  
65         filename = Chineseutil.encodeFilename(filename, request);  
66         response.setContentType("application/Vnd.ms-excel;charset=UTF-8");     
67         response.setHeader("Content-Disposition", "attachment;filename=" + new String(filename.getBytes("gb2312"), "iso8859-1"));     
68         OutputStream ouputStream = response.getOutputStream();
69         workbook.write(ouputStream);     
70         
71         //导出数据后将信息存入cookie
72      Cookie status = new Cookie("updtstatus", "1");
73       status.setMaxAge(3600);//设置cookie存活时间1个小时
74       response.addCookie(status);
75         
76         ouputStream.flush();     
77         ouputStream.close();  
78     }
复制代码

转载于:https://www.cnblogs.com/Jansens520/p/6513504.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/572677.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android 键盘 自动消失,android 软键盘 回到键 消失事件 监听

弹出输入法 时 隐藏了 ‘底部状态栏’ 在按 物理 返回键 后&#xff0c; 软键盘消失后 恢复 ‘底部状态栏’public class ImageViewCareIME extends ImageView{public ImageViewCareIME(Context context){super(context);// TODO Auto-generated constructor stub}public stati…

android 开机动画尺寸,Android开机Logo动画制作

开机Logo制作1.准备Logo图片准备一张符合尺寸要求(例如&#xff1a;1280x720)的图片&#xff0c;最好是png或jgp。2.用Hitool工具制作镜像文件海思芯片使用的是Hitool工具&#xff0c;打开Hitool&#xff0c;选择HiFastplay&#xff0c;选择右下角的Logo设置&#xff0c;添加图…

照片边框 app android,Screener App-一手搞定将手机截图加上外框

记得几年前想要在Android手机上截图&#xff0c;得安装类似截图软件与Root 才行&#xff0c;层层的关卡还真不是一般使用者能处理的&#xff0c;如今Android手机大部分都已内置截图功能&#xff0c;对于我撰写App文章来说帮助很大&#xff0c;但有时想要表现哪台手机外框画面时…

JAVA补充-抽象类

1.抽象类基本概念 1 package com.neusoft.abstracted;2 /**3 * 抽象类&#xff1a;在class之前加abstract关键字4 * 抽象方法语法&#xff1a; 修饰符 abstract 返回值类型 方法名&#xff08;形参列表&#xff09;&#xff1b;5 * 1.抽象方法的返回值前面有abstract关键…

android谷歌补丁日期,久违的Android更新补丁:多年前的坑,谷歌终于给填上了

3月5日消息&#xff0c;近日谷歌在最新的Android安全公告中称&#xff0c;当前更新的补丁CVE-2020-0069已修复联发科芯片设备的安全漏洞。据了解&#xff0c;联发科曾在2016年左右确认&#xff0c;部分搭载联发科芯片的Android设备存在安全性问题&#xff0c;所涉及的设备数量达…

android个人微信支付,Android之微信支付

Android开发中&#xff0c;大多数电商APP都会有支付这么模块&#xff0c;此博客就讲一下微信支付&#xff0c;代码不多&#xff0c;很简单就可以完成&#xff0c;支付宝支付请看博客 Android支付之支付宝封装类先来看看效果图微信支付首先要去微信开发平台申请&#xff0c;得到…

华为鸿蒙山海,华为包圆了整部《山海经》,鸿蒙是何意?还有青龙白虎朱雀玄武?...

华为已经申请注册“华为鸿蒙”商标并标注该商品可用于操作系统程序鸿蒙一个自带书香气的名字一听就是文化人&#xff01;一听就是中华文化传承人&#xff01;那么鸿蒙是啥意思鸿蒙就是一团气不是普通的气体传说盘古在昆仑山开天辟地之前世界是一团混沌的元气这种自然的元气叫做…

ASP.NET MVC5使用Area区域

转载&#xff1a;http://www.lanhusoft.com/Article/217.html 在大型的ASP.NET mvc5项目中一般都有许多个功能模块&#xff0c;这些功能模块可以用Area&#xff08;中文翻译为区域&#xff09;把它们分离开来&#xff0c;比如&#xff1a;Admin&#xff0c;Customer&#xff0c…

html5 最小化,当前界面最小化快捷键 窗口最小化和全屏化的快捷键是什么?

怎样用快捷键显示最小化的窗口在键盘上同时按下WinD 键&#xff0c;可以最小化所有窗口。在键盘上再次同时按下WinD 键&#xff0c;可以还原步骤1最小化的所有窗口。在键盘上同时按下WindowsM键&#xff0c;可以最小化所有窗口。在键盘上同时按下WindowsShiftM键。电脑窗口最小…

华为鸿蒙用户体验计划怎样关闭,华为用户要注意,手机关闭这3个“默认选项”,还能流畅再用2年...

华为用户要注意&#xff0c;手机关闭这3个“默认选项”&#xff0c;还能流畅再用2年众所周知&#xff0c;我们在使用手机的时候&#xff0c;经常会有这样的感触&#xff0c;就是手机明明才刚买没多久&#xff0c;使用起来却相当的卡顿&#xff0c;这还是为什么&#xff1f;手机…

html5手机端三级联动城市选择代码,省市县三级联动(jQuery手机端收货地址选择地区代码)...

【实例简介】【实例截图】【核心代码】jQuery手机端收货地址选择代码 - 站长素材默认调用所在地区&#xff1a;设置默认值所在地区&#xff1a;/*** 默认调用*/!function () {var $target $(#J_Address);$target.citySelect();$target.on(click, function (event) {event.stop…

内连接、左外连接、右外连接、交叉连接区别

在之前&#xff0c;我对MSSQL中的内连接和外连接所得出的数据集不是很清楚。这几天重新温习了一下SQL的书本&#xff0c;现在的思路应该是很清楚了&#xff0c;现在把自己的理解发出来给大家温习下。希望和我一样对SQL的连接语句不太理解的朋友能够有所帮助。&#xff08;发这么…

winform数据传递到html,C#下winform和JS的互相调用和传参(webbrowser)

不多说&#xff0c;直接上代码&#xff0c;winform下button1调用js函数&#xff0c;从html页面获取值&#xff0c;然后JS调用WINFORM的函数&#xff0c;传送获取到的值到winform并通过messagebox的方法show出来。一步到位&#xff0c; winform调用JS函数 和JS调用winform函数的…

xcode开发html5工具,5个Xcode开发调试技巧

1.Enable NSZombie Objects(开启僵尸对象)Enable NSZombie Objects可能是整个Xcode开发环境中最有用的调试技巧。这个技巧非常非常容易追踪到重复释放的问题。该技巧会以非常简洁的方式打印指出重复释放的类和该类的内存地址。怎么开启僵尸对象呢&#xff1f;首先打开“Edit Sc…

Unity 协程深入解析与原理

先来直接放一段代码 1 using System.Collections;2 using System.Collections.Generic;3 using UnityEngine;4 5 public class CoroutineTest : MonoBehaviour6 {7 8 void Start()9 { 10 Debug.Log("Start Begin"); 11 12 CustomCoroutine …

NAT协议详解

NAT&#xff08;Network Address Translation&#xff0c;网络地址转换&#xff09;是将IP数据报头中的IP地址转换为另一个IP地址的过程。在实际应用中&#xff0c;NAT主要用于实现私有网络访问公共网络的功能。这种通过使用少量的公网IP地址代表较多的私网IP地址的方式&#x…

计算机应用基础文字处理软件应用职高PPT,《计算机应用基础》职高2010修订版_教(学)案...

《计算机应用基础》职高2010修订版_教(学)案 (93页)本资源提供全文预览&#xff0c;点击全文预览即可全文预览,如果喜欢文档就下载吧&#xff0c;查找使用更方便哦&#xff01;39.9 积分&#xfeff;. .《计算机应用基础》职高2010修订版 教案第一章 计算机基础知识第二章 中文…

快速排序【记录一下代码】

本文仅用作学习记录&#xff0c;大神勿喷O(∩_∩)O~ 代码一、百度百科C语言版本代码,参考数据结构p274(清华大学出版社&#xff0c;严蔚敏) 1 void Qsort1(int a[], int low, int high)//百度百科C语言版本代码 2 {/*参考数据结构p274(清华大学出版社&#xff0c;严蔚敏)*/3 …

eclipse 修改java代码不重启服务器 生效配置

1.本文目的&#xff1a;用tomcat进行web开发时&#xff0c;修改Java代码往往要重启代码&#xff0c;当工程较大启动较慢时&#xff0c;严重影响效率&#xff0c;本文通过eclipse下tomcat开发和发布web程序时&#xff0c;对一些Java代码一般修改&#xff08;不是增减方法、变量&…

Shell第二篇:正则表达式和文本处理工具

一 什么是正则 正则就是用一些具有特殊含义的符号组合到一起&#xff08;称为正则表达式&#xff09;来描述字符或者字符串的方法。或者说&#xff1a;正则就是用来描述一类事物的规则。 生活中处处都是正则&#xff1a; 比如我们描述&#xff1a;4条腿 你可能会想到的是四条腿…