java 实现excel 导出功能

实现功能:java导出excel表

1、jsp代码

1 <form id="zhanwForm" action="<%=path%>/conferences.do?" target="_self"  method="get" >
2          <input type="hidden" name="method" value="outData"/>
3          <input type="hidden" name="compassId" value='1'/>
4          <input type="hidden" name="fromWhere" value="AAAA"/>
5 
6 </from>
View Code

2、js代码

 1      $(".daochu1").click(function(){
 2              var bank = new Array();
 3               $.each($(".guangGaoLeiXing").find("input:checked"), function () {
 4                     bank.push($(this).val());
 5             });    
 6              if(bank == false){
 7                  alert("请选择要统计类型");
 8              }else{
 9               $("#zhanwForm").submit();    
10             }     
11           })
12         
13          $(".lyBtn").click(function(){
14              $(".mask").show();
15             $(".tishiDiv").show();
16             $.ajax({
17                 url : '<%=path %>/conferences.do?method=getUserLy&fromWhere=csco',
18                 type : 'GET',  
19                 dataType : 'json',  
20                 success : function(data) {
21                      $(".mask").hide();
22                      $(".tishiDiv").hide();
23                       window.open(data.url);
24                 }  
25               })
26          });
View Code

3、action处理代码

  1 //导出数据
  2     //SELECT SUBSTRING(create_time,1,10) s,COUNT(*)  FROM data_read WHERE data_id IN (SELECT data_id FROM DATA WHERE model_id=2 OR model_id=27)  GROUP BY s
  3     @RequestMapping(params = "method=outData",method = RequestMethod.GET)                  
  4     public void outCompassTongJiData(Integer compassId,String fromWhere,ModelMap model,HttpServletRequest request,HttpServletResponse response)
  5     {        
  6         String urlPath =  request.getScheme()+"://"+request.getServerName()+request.getContextPath();
  7         XSSFWorkbook rwb1 = new XSSFWorkbook();    
  8          
  9         while(true)
 10         {
 11             if(rwb1.getNumberOfSheets() != 0){
 12                 rwb1.removeSheetAt(0);
 13             }
 14             else{ 
 15                 break;
 16             }
 17         }
 18         try {
 19             int bankLong = 0;
 20             int bank1Long = 0;
 21             String []  bank = request.getParameterValues("bank");//广告类型选择
 22             String []  bank1 = request.getParameterValues("bank1");//身份选择
 23             String startTime = request.getParameter("startTime");
 24             String endTime = request.getParameter("endTime");
 25             String[] shenfenList = {"医生","医学生","其他"};
 26             String[] zhichengArray = {"主任医师","副主任医师","主治医师","住院医师(有执业证)","住院医师(未考执业证)","助理医师(有执业证)","助理医师(未考执业证)","其他"};
 27             String typeString1 ="";
 28             String typeString2 ="";
 29             if(bank!=null){
 30                 bankLong = bank.length;                
 31                 for(int i=0;i<bankLong;i++){
 32                     if(bank[i].equals("1")||bank[i].equals("3")||bank[i].equals("8")){                
 33                         typeString1 = typeString1+bank[i]+",";                        
 34                     }else {
 35                         typeString2 = typeString2+bank[i]+",";                        
 36                     }
 37                 }
 38             }
 39             if(typeString1 != null && typeString1.length() != 0){
 40                 typeString1 = typeString1.substring(0, typeString1.length()-1);
 41             }
 42             if(typeString2 != null && typeString2.length() != 0){
 43                 typeString2 = typeString2.substring(0, typeString2.length()-1);
 44             }
 45             if(bank1!=null){
 46                 bank1Long = bank1.length;
 47             }
 48                                     
 49             XSSFSheet ws1 = rwb1.createSheet("统计数据");
 50             ws1.addMergedRegion(new CellRangeAddress(0, 1, 0, 0));
 51             ws1.addMergedRegion(new CellRangeAddress(0, 1, 1, 1));
 52             ws1.addMergedRegion(new CellRangeAddress(0, 1, 2, 2));
 53             ws1.addMergedRegion(new CellRangeAddress(0, 1, 3, 3));
 54             ws1.addMergedRegion(new CellRangeAddress(0, 0, 4, 5));
 55             int count = 0;//
 56             int rolNUm = 0;//
 57             
 58             XSSFRow row1 = ws1.createRow(0);
 59             
 60             row1.createCell(rolNUm).setCellValue("类型");
 61             rolNUm++;
 62             row1.createCell(rolNUm).setCellValue("ID");
 63             rolNUm++;
 64             row1.createCell(rolNUm).setCellValue("标题");
 65             rolNUm++;
 66             row1.createCell(rolNUm).setCellValue("地址");
 67             rolNUm++;
 68             row1.createCell(rolNUm).setCellValue("点击量");//1/2
 69         
 70             count++;
 71             XSSFRow row2 = ws1.createRow(count);            
 72             row2.createCell(rolNUm).setCellValue("总点击次数");
 73             rolNUm++;
 74             row2.createCell(rolNUm).setCellValue("总点击用户数");
 75             //六种统计类型:首页广告、上方广告、session相关性广告、展商活动、动态(现场秀)、消息站
 76             
 77                     //得到需要统计的广告类型的集合
 78                     List<CompassTongji> compassTongJis = conferencesService.getCompassTongJiByType(fromWhere,typeString1,typeString2,startTime,endTime);// i,group by dataId    查询不重复的data
 79                     //如果不为空,遍历
 80                     if(compassTongJis != null && compassTongJis.size() != 0){
 81                         for(CompassTongji compassTongJi :compassTongJis){ 
 82                             int dataId = compassTongJi.getDataId();//广告ID
 83                             int type = compassTongJi.getType();
 84                             String title = compassTongJi.getDataTitle();//广告标题
 85                             String url1 = compassTongJi.getDataUrl()==null?"":compassTongJi.getDataUrl();//广告地址
 86                             String url = "";
 87                             if(type - 8 == 0){                                                
 88                                 if(url1.indexOf("method=")!= -1){
 89                                     String[] urlStrings = url1.split("&");
 90                                     url = urlStrings[0]+"&"+urlStrings[1];
 91                                 }else{
 92                                     int index = url1.indexOf("?");
 93                                     if(index != -1){
 94                                         url = url1.substring(0, index);
 95                                     }else{
 96                                         url = url1;
 97                                     }
 98                                 }    
 99                             }else{
100                                 int index = url1.indexOf("?");
101                                 if(index != -1){
102                                     url = url1.substring(0, index);
103                                 }else{
104                                     url = url1;
105                                 }
106                                 
107                             }
108                             
109                             //总点击量
110                             int totalClickNumber = conferencesService.getTotalClickNumber(dataId,url,startTime,endTime,type,fromWhere);
111                             //总点击人数
112                             int totalClickPeopleNumber = conferencesService.getTotalClickPeopleNumber(dataId,url,startTime,endTime,type,fromWhere);
113                             count++;
114                             XSSFRow row3 = ws1.createRow(count);
115                             rolNUm=0;
116                             row3.createCell(rolNUm).setCellValue(type == 1?"首页广告":type ==2?"上方广告":type==3?"session相关性广告":type==4?"展商活动":type==5?"动态(现场秀)":type==6?"消息站":type == 7?"弹窗":type == 8?"推送":"首页模块");
117                             rolNUm++;
118                             row3.createCell(rolNUm).setCellValue(dataId);
119                             rolNUm++;
120                             row3.createCell(rolNUm).setCellValue(title);
121                             rolNUm++;
122                             row3.createCell(rolNUm).setCellValue(url1);  
123                             rolNUm++;
124                             row3.createCell(rolNUm).setCellValue(totalClickNumber);
125                             rolNUm++;
126                             row3.createCell(rolNUm).setCellValue(totalClickPeopleNumber);
127                             for(int j=0;j<bank1Long;j++){
128                                 int tongJiZiDuan = Integer.valueOf(bank1[j]);
129                                 if (tongJiZiDuan == 1) {
130                                     //领域统计 userLy
131                                     //先查询所有领域列表
132                                     //遍历领域列表(compassfield)     根据 领域id 查询 用户表(field_id 领域ID  field  领域 )   得到  领域统计信息
133                                     List<CompassField> compassList = conferencesService.getCompassList();
134                                     int compassListLength = compassList.size();
135                                     
136                                     ws1.addMergedRegion(new CellRangeAddress(0, 0, rolNUm+1, compassListLength+rolNUm));    
137                                     row1.createCell(rolNUm+1).setCellValue("领域");
138                                     if(compassList != null && compassList.size()!=0){                                        
139                                         for (CompassField compassField : compassList) {
140                                             int compassFieldId = compassField.getCompassFieldId();
141                                             int countLy = conferencesService.getUserLyInfo(dataId,url,compassFieldId,startTime,endTime,type,fromWhere);
142                                             rolNUm++;
143                                             row2.createCell(rolNUm).setCellValue(compassField.getFieldName());                                                                    
144                                             row3.createCell(rolNUm).setCellValue(countLy);                                                                                            
145                                         }
146                                     }
147                                 }
148                                 if(tongJiZiDuan == 2){//科室统计 userKs    
149                                     List<CompassKs> compassKsListList = conferencesService.getCompassKsList();
150                                     int userKsListLength = compassKsListList.size();
151                                     ws1.addMergedRegion(new CellRangeAddress(0, 0, rolNUm+1, userKsListLength+rolNUm));
152                                     row1.createCell(rolNUm+1).setCellValue("科室");
153                                     if(compassKsListList != null && compassKsListList.size()!=0){
154                                         for (CompassKs compassKs : compassKsListList) {    
155                                             int compassKsId = compassKs.getCompassKsId();
156                                             int countKs  = conferencesService.getUserKsInfo(dataId,url,compassKsId,startTime,endTime,type,fromWhere);
157                                             rolNUm++;                                                
158                                             row2.createCell(rolNUm).setCellValue(compassKs.getKsName());
159                                             row3.createCell(rolNUm).setCellValue(countKs);                                                
160                                         }
161                                     }        
162                                 }
163                                 
164                                 if(tongJiZiDuan == 3){//职称统计 zhicheng
165                                     int userZhichengListLeng = zhichengArray.length;
166                                     ws1.addMergedRegion(new CellRangeAddress(0, 0, rolNUm+1, userZhichengListLeng+rolNUm));
167                                     row1.createCell(rolNUm+1).setCellValue("职称");
168                                     for (int k=0;k<userZhichengListLeng;k++) {
169                                         String zhicheng = zhichengArray[k];
170                                         int userZhichengList  = conferencesService.getUserZhichengInfo(dataId,url,startTime,endTime,zhicheng,type,fromWhere);
171                                         rolNUm++;
172                                         row2.createCell(rolNUm).setCellValue(zhicheng);
173                                         row3.createCell(rolNUm).setCellValue(userZhichengList);        
174                                     }
175                                     
176                                 }
177                                 
178                                 if(tongJiZiDuan == 4){//身份统计                                                                             
179                                     int userShenfenListLength = shenfenList.length;                                
180                                     ws1.addMergedRegion(new CellRangeAddress(0, 0, rolNUm+1, userShenfenListLength + rolNUm));
181                                     row1.createCell(rolNUm+1).setCellValue("身份");
182                                     
183                                     for (int k = 0;k<userShenfenListLength;k++) {
184                                         String shenfen = shenfenList[k];
185                                         int countShenFen  = conferencesService.getClickUserShenFenInfo( dataId,url,startTime,endTime,shenfen,type,fromWhere);
186                                         rolNUm++;                                        
187                                         row2.createCell(rolNUm).setCellValue(shenfen);                                        
188                                         row3.createCell(rolNUm).setCellValue(countShenFen);                                                                    
189                                     }                                    
190                                 }
191                                 if(tongJiZiDuan == 5){//省市(市)统计                                    
192                                     List<Hospital> provinceList  = conferencesService.getProvinceList();    
193                                     
194                                     if(provinceList != null && provinceList.size()!=0){
195                                         for (Hospital hospital : provinceList) {                        
196                                             Integer provinceId = hospital.getHospitalId();
197                                             String provinceName = hospital.getProvince();
198                                             
199                                             if(provinceName!=null && provinceName.length() != 0){
200                                                 List<Hospital> cityList = conferencesService.getCityInfoByProvinceId(provinceId);
201                                                 
202                                                 if(cityList != null && cityList.size() != 0){
203                                                     int cityListLength = cityList.size();
204                                                     ws1.addMergedRegion(new CellRangeAddress(0, 0, rolNUm+1, rolNUm+cityListLength));
205                                                     row1.createCell(rolNUm+1).setCellValue(provinceName);    
206                                                     for (Hospital hospital2 : cityList) {
207                                                         //得到市的名称
208                                                         String cityName = hospital2.getCity();
209                                                         Integer cityId = hospital2.getHospitalId();
210                                                         if(cityName!=null && cityName.length() != 0){
211                                                             int cityNum = conferencesService.getCityInfoByProvinceNameAndCityName(dataId,url,startTime, endTime, cityId,type,fromWhere);
212                                                             rolNUm++;                                    
213                                                             row2.createCell(rolNUm).setCellValue(cityName);                                        
214                                                             row3.createCell(rolNUm).setCellValue(cityNum);    
215                                                         }    
216                                                     }                                                        
217                                                 }    
218                                             }//省不为空
219                                         }                                            
220                                     }    
221                                 }//省市统计结束                                
222                             }                            
223                         }
224                      }//最外if结束        
225                 
226             
227            
228             String filePath = request.getSession().getServletContext().getRealPath("files/execl");
229             File conFile = new File(filePath);                 //目录结构
230             if(!conFile.exists())
231             {
232                 conFile.mkdir();
233             }    
234             String fileName = "compassTongJi.xlsx";
235             File file = new File(filePath+"/"+fileName);
236             if(file.exists())
237             {
238                 file.delete();
239             }
240             else{
241                 file.createNewFile();
242             }    
243             FileOutputStream fout = new FileOutputStream(file);
244             rwb1.write(fout);
245             fout.close();
246             //JSONObject jsonObject = new JSONObject();
247             //jsonObject.accumulate("url",request.getContextPath()+"/files/execl/"+fileName);
248             //writeToJson(response, jsonObject.toString());
249             String urlString ="<script type='text/javascript'>window.parent.open('"+urlPath+"/files/execl/"+fileName+"')</script>";
250             PrintWriter out = response.getWriter();
251             response.setCharacterEncoding("utf-8");
252             response.setContentType("text/html;charset=UTF-8");
253             out.write(urlString);
254             out.flush();
255             out.close();
256         } catch (Exception e) {
257             // TODO: handle exception
258             e.printStackTrace();
259         }
260     }
View Code

梦想是一个说出来就矫情的东西,它是生长在暗地里的一颗种子,只有破土而出,拔节而长,终有一日开出花来,才能正大光明的让所有人都知道。在此之前,除了坚持,别无选择。

转载于:https://www.cnblogs.com/jichuang/p/8036144.html

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

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

相关文章

什么是CI/CD

一、简介 CI / CD的采用改变了开发人员和测试人员如何发布软件。 最初是瀑布模型&#xff0c;后来是敏捷开发&#xff0c;现在是DevOps&#xff0c;这是现代开发人员构建出色的产品的技术路线。随着DevOps的兴起&#xff0c;出现了持续集成&#xff08;Continuous Integration…

部署WEB项目到服务器(三)安装mysql到linux服务器(Ubuntu)详解

突发奇想&#xff0c;想在自己电脑上部署一个web网站。 1&#xff0c;首先是下载一个适合自己已安装服务器版本的mysql数据库。 这里使用网上的链接http://dev.mysql.com/downloads/mysql/5.6.html#downloads 或者使用代理网站上下载&#xff1a;https://mirrors.huaweicloud.c…

在Windows下编译ffmpeg完全手册

本文的内容几乎全部来自于FFmpeg on Windows&#xff0c;但是由于国内的网络封锁&#xff0c;很难访问这个域名下的内容&#xff0c;因此我一方面按照我自己的理解和实践做了翻译&#xff0c;另一方面也是为了能提供一个方便的参考方法。 注&#xff1a; 1. 对于compil…

padding和卷积的区别_TensorFlow笔记1——20.CNN卷积神经网络padding两种模式SAME和VALID...

第1种解说&#xff1a;(核心最后一张图&#xff0c;两种填充方式输出的形状尺寸计算公式)在用tensorflow写CNN的时候&#xff0c;调用卷积核api的时候&#xff0c;会有填padding方式的参数&#xff0c;找到源码中的函数定义如下&#xff08;max pooling也是一样&#xff09;&am…

循环神经网络变形之 (Long Short Term Memory,LSTM)

1、长短期记忆网络LSTM简介 在RNN 计算中&#xff0c;讲到对于传统RNN水平方向进行长时刻序列依赖时可能会出现梯度消失或者梯度爆炸的问题。LSTM 特别适合解决这种需要长时间依赖的问题。 LSTM&#xff08;Long Short Term Memory&#xff0c;长短期记忆网络&#xff09;是R…

UE4 ShooterGame Demo的开火的代码

之前一直没搞懂按下鼠标左键开火之后&#xff0c;代码的逻辑是怎么走的&#xff0c;今天看懂了之前没看懂的部分&#xff0c;进了一步 ShooterCharacter.cpp void AShooterCharacter::OnStartFire() {AShooterPlayerController* MyPC Cast<AShooterPlayerController>(Co…

Windows系统使用minGW+msys 编译ffmpeg 0.5的全过程详述

一.环境配置 1.下载并安装 MinGW-5.1.4.exe (http://jaist.dl.sourceforge.net/sourcef … -5.1.4.exe)&#xff0c;安装时选中 g, mingw make。建议安装到c:/mingw. 2.下载并安装 MSYS-1.0.11-rc-1.exe (http://jaist.dl.sourceforge.net/sourcef … 1-rc-1.exe)&#xff0c;安…

程序员 赚钱

业余编程赚钱 程序员的好方法 现在的人生活水平高了&#xff0c;开销也大了&#xff0c;同时对于一些技术性人员来说有很多种&#xff0c;有些程序员自己开公司&#xff0c;开发自己的产品&#xff0c;年赚百万&#xff0c;有些程序员还在给别人打工&#xff0c;每天累死累活的…

代码 优化 指南 实践

C代码优化方案 华中科技大学计算机学院 姓名&#xff1a; 王全明 QQ&#xff1a; 375288012 Email&#xff1a; quanming1119163.com 目录 目录 C代码优化方案 1、选择合适的算法和数据结构 2、使用尽量小的数据类型 3、减少运算的强度 &#xff08;1&…

.12-浅析webpack源码之NodeWatchFileSystem模块总览

剩下一个watch模块&#xff0c;这个模块比较深&#xff0c;先大概过一下整体涉及内容再分部讲解。 流程图如下&#xff1a; NodeWatchFileSystem const Watchpack require("watchpack");class NodeWatchFileSystem {constructor(inputFileSystem) {this.inputFileSy…

Python 第三方模块之 beautifulsoup(bs4)- 解析 HTML

简单来说&#xff0c;Beautiful Soup是python的一个库&#xff0c;最主要的功能是从网页抓取数据。官方解释如下&#xff1a;官网文档 Beautiful Soup提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能。 它是一个工具箱&#xff0c;通过解析文档为用户提供…

modal vue 关闭_Vue弹出框的优雅实践

引言页面引用弹出框组件是经常碰见的需求,如果强行将弹出框组件放入到页面中,虽然功能上奏效但没有实现组件与页面间的解耦,非常不利于后期的维护和功能的扩展.下面举个例子来说明一下这种做法的弊端.click"openModal()">点击 :is_open"is_open" close…

开放平台大抉择

开放平台大抉择之新浪SAE&#xff1a;为个人应用开发带来福音 导读&#xff1a;继上期淘宝网副总裁王文彬从平台功能特色、运营状况等多方面分享了淘宝开放平台的历程和挑战之后。国内另一家云平台服务方的典型代表——Sina App Engine(简称SAE)&#xff0c;作为新浪研发中心于…

HTTP POST 发送数据的参数 application/x-www-form-urlencoded、multipart/form-data、text/plain

HTTP 简介 HTTP/1.1 协议规定的 HTTP 请求方法有 OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE、CONNECT 这几种。 其中 POST 一般用来向服务端提交数据&#xff0c;本文主要讨论 POST 提交数据的几种方式。 我们知道&#xff0c;HTTP 协议是以 ASCII 码传输&#xff0c;建…

vue 二进制文件的下载(解决乱码和解压报错)

问题描述&#xff1a;项目中使用的是vue框架进行开发&#xff0c;因为文件下载存在权限问题&#xff0c;所以并不能通过 a 链接的 href 属性直接赋值 URL进行下载&#xff0c; &#xff08;如果你的文件没有下载权限&#xff0c;可以直接通过href属性赋值URL的方法进行文件下载…

浅谈云计算与数据中心计算

文/林仕鼎 云计算概念发端于Google和Amazon等超大规模的互联网公司&#xff0c;随着这些公司业务的成功&#xff0c;作为其支撑技术的云计算也得到了业界的高度认可和广泛传播。时至今日&#xff0c;云计算已被普遍认为是IT产业发展的新阶段&#xff0c;从而被赋予了很多产业和…

数据挖掘:如何寻找相关项

导读&#xff1a;随着大数据时代浪潮的到来数据科学家这一新兴职业也越来越受到人们的关注。本文作者Alexandru Nedelcu就将数学挖掘算法与大数据有机的结合起来&#xff0c;并无缝的应用在面临大数据浪潮的网站之中。 数据科学家需要具备专业领域知识并研究相应的算法以分析对…

00030_ArrayList集合

1、数组可以保存多个元素&#xff0c;但在某些情况下无法确定到底要保存多少个元素&#xff0c;此时数组将不再适用&#xff0c;因为数组的长度不可变 2、JDK中提供了一系列特殊的类&#xff0c;这些类可以存储任意类型的元素&#xff0c;并且长度可变&#xff0c;统称为集合 3…

1.3tf的varible\labelencoder

1.tf的varible变量 import tensorflow as tf #定义变量--这里是计数的变量 statetf.Variable(0,namecounter) print (state.name) #输出变量值 onetf.constant(1) #常量new_valuetf.add(state,one) updatetf.assign(state,new_value)#初始化所有变量 inittf.initialize_all_var…

多线程编程指南

1. 多线程编程指南1--线程基础 线程编程指南1--线程基础 Wednesday, 29. March 2006, 11:48:45 多线程 本文出自:BBS水木清华站 作者:Mccartney (coolcat) (2002-01-29 20:25:25) multithreading可以被翻译成多线程控制。与传统的UNIX不同&#xff0c;一个传统 的UNIX进…