`
foreverPaul
  • 浏览: 6869 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

前端页面下载服务端DB数据以EXCEL格式下载到本地

阅读更多
简单描述过程:访问jsp页面,调用后台url(.do);调用相应*.java,再调用DB,返回数据;最终下载到本地,存为.xls(EXCEL)文件。

一、JSP页面
<%@ page language="java" contentType="text/html; charset=utf-8" %>
<html>
<body onload="init();">
	<div>		
<form name="form" action="download.do" method="get">
		</form>
	</div>

<script type="text/javascript">

	/**
	 * function:页面初始化加载
	 */
	function init(){
		document.form.submit();
	}

</script>
</body>
</html>

二、java代码(*.java)    先配一个.do和testDownLoad.java文件的映射
    <!--下载信息-->
  
<bean name="/downLoad/download.do" class="com.paic.cm.ClientManage.web.controller.downLoad.testDownLoad">
   </bean>

    testDownLoadjava代码:    
......//此为调用DB获取数据代码,省略
String fileName = ""+System.currentTimeMillis()+".xls";//定义文件名称
		//设置response
		response.setContentType("application/vnd.ms-excel");//设置文件格式
		response.setHeader("Content-Disposition","attachment;filename="+fileName);
		OutputStream os = response.getOutputStream();
List<HomePageInfosDTO> retList = (List<HomePageInfosDTO>)retMap.get("APP_INFO");//DB返回的数据     
WritableWorkbook wwb=null;
WritableSheet ws=null;
		        try {
		            wwb = Workbook.createWorkbook(os);
		            ws=wwb.createSheet("sheet_01",0);
		            ws.getSettings().setDefaultColumnWidth(15);
		            //创建表头
		            logger.info("开始创建表头~~~~~~~~~~");
		            WritableFont wfc = new WritableFont(WritableFont.ARIAL,10,WritableFont.BOLD,false,UnderlineStyle.NO_UNDERLINE,jxl.format.Colour.BLACK);
		            WritableCellFormat wcfFC = new WritableCellFormat(wfc);
		            wcfFC.setBackground(jxl.format.Colour.GREY_25_PERCENT);//设置表头背景颜色
		            Label appIDHeadLabel 		= new Label(0,0,"应用名称",wcfFC);
		            Label AppConsoleHeadLabel 	= new Label(1,0,"应用平台",wcfFC);
		            Label appNameHeadLabel 		= new Label(2,0,"最新版本",wcfFC);
		            Label cerNameHeadLabel 		= new Label(3,0,"应用状态",wcfFC);
		            Label cerPswHeadLabel 		= new Label(4,0,"今日新增用户",wcfFC);
		            Label summaryUserHeadLabel 	= new Label(5,0,"累计用户",wcfFC);
		            ws.setColumnView(0, 30);
		            ws.addCell(appIDHeadLabel);
		            ws.addCell(AppConsoleHeadLabel);
		            ws.addCell(appNameHeadLabel);
		            ws.addCell(cerNameHeadLabel);
		            ws.addCell(cerPswHeadLabel);
		            ws.addCell(summaryUserHeadLabel);
		            logger.info("创建表头完成~~~~~~~~~~");
		            Label appIdLabel = null;
		            Label appConsoleLabel = null;
		            Label appNameLabel = null;
		            Label cerNameLabel = null;
		            Label cerPswLabel = null;
		            Label summaryUserLabel = null;
		            logger.info("开始写表体~~~~~~~~~~");
		            for(int i=1;i<retList.size();i++) {
		            	HomePageInfosDTO dto = (HomePageInfosDTO)retList.get(i);
		                String appId = dto.getAppName(); 			//应用名称
		                String appConsole = dto.getAppConsole(); 	//应用平台
		                String appName = dto.getNewestVersion();	//最新版本
		                String cerName = dto.getAppState();			//应用状态
		                String cerPsw = dto.getTodayNewUser();		//今日新增用户
		                String summaryUser = dto.getTotalUser();    //累计用户
		                appIdLabel = new Label(0,i,appId);
		                appConsoleLabel = new Label(1,i,appConsole);
		                appNameLabel = new Label(2,i,appName);
		                cerNameLabel = new Label(3,i,cerName);
		                cerPswLabel = new Label(4,i,cerPsw);
		                summaryUserLabel = new Label(5,i,summaryUser);
		                ws.addCell(appIdLabel);
		                ws.addCell(appConsoleLabel);
		                ws.addCell(appNameLabel);
		                ws.addCell(cerNameLabel);
		                ws.addCell(cerPswLabel);
		                ws.addCell(summaryUserLabel);
		            }
		            logger.info("表体写入完成~~~~~~~~~~");
		        } catch (Exception e) {
		            logger.error("输出Excel失败:"+e.getMessage(),e);
		        } finally {
		            try {
		                wwb.write();
		                wwb.close();
		            } catch (WriteException e) {
		            	logger.error("关闭WritableWorkbook出错:"+e.getMessage(),e);
		            } catch (IOException e) {
		            	logger.error("关闭WritableWorkbook出错:"+e.getMessage(),e);
		            }
		        }
		        logger.info("下载成功~~~~~");	
 
分享到:
评论

相关推荐

    asp.net应用Excelpackage在服务端生成excel

    在这个场景下,ExcelPackage库是一个非常实用的工具,它允许我们在服务端生成Excel文件,并且可以利用预先设计好的模板来快速填充数据,保持一致的格式。本文将详细介绍如何在ASP.NET中使用ExcelPackage在服务端生成...

    easyui+数据导出为Excel

    在IT行业中,前端数据处理和展示是至关重要的,特别是在企业级应用中,用户往往需要将大量数据导出为便于分析的格式,如Excel。本文将详细介绍如何在基于EasyUI的前端框架下实现数据导出为Excel的功能。 EasyUI是一...

    纯前端:luckysheet在线编辑Excel导出,Excel文件导入

    用户可以通过选择文件或者拖拽的方式,将本地的Excel文件上传到网页上,然后在Luckysheet中进行查看和编辑。反之,编辑后的数据也可以导出为Excel文件,方便用户在离线环境下继续处理。这一特性使得Luckysheet能够...

    客户端服务端数据传输源码

    客户端服务端数据传输源码客户端服务端数据传输源码客户端服务端数据传输源码客户端服务端数据传输源码客户端服务端数据传输源码客户端服务端数据传输源码客户端服务端数据传输源码客户端服务端数据传输源码客户端...

    QQ客户端和服务端下载

    QQ客户端和服务端下载QQ客户端和服务端下载QQ客户端和服务端下载QQ客户端和服务端下载QQ客户端和服务端下载QQ客户端和服务端下载QQ客户端和服务端下载QQ客户端和服务端下载QQ客户端和服务端下载QQ客户端和服务端下载...

    websocket实现前端页面动态刷新数据库中数据

    在“websocket实现前端页面动态刷新数据库中数据”的项目中,我们看到技术栈包括WebSocket、MySQL、Java 8和Tomcat 8。下面是这些技术如何协同工作来实现目标的详细解释: 1. **WebSocket**:WebSocket API是HTML5...

    nuxt3服务端获取数据demo.rar

    nuxt3服务端获取数据demo.rar. nuxt3. Ts ssr 在服务端获取数据,随html一起返回浏览器的demo。封装好的 get 跟post请求 可以方便移植到项目中,或者直接在这修改!欢迎下载。免c币下载地址:...

    千年服务端自身bug分析与防范彻底杜绝服务_db数据_千年_千年。数据修改_

    《千年服务端自身bug分析与防范:彻底杜绝数据异常》 在IT行业中,网络游戏服务器的安全性和稳定性至关重要。本文将深入探讨“千年”游戏服务端存在的自身bug,以及如何通过有效的分析和防范措施来彻底杜绝数据库...

    易语言服务端客户端互换收发数据

    - 客户发送数据:客户端通过连接的套接字对象发送数据到服务端,可能需要考虑数据格式(如字符串、二进制等)和编码方式。 - 服务发送数据:服务端在接收到客户端的数据后,根据业务逻辑生成响应,再通过相同的套...

    客户端服务端数据传输可执行程序

    客户端服务端数据传输可执行程序客户端服务端数据传输可执行程序客户端服务端数据传输可执行程序客户端服务端数据传输可执行程序客户端服务端数据传输可执行程序客户端服务端数据传输可执行程序客户端服务端数据传输...

    html前端动态获取后端数据显示到表格,实现分页显示

    后端使用js+express,读取csv文件存储到内存,前端需要那一段的数据,后端就给前端那一页的数据。非常适合前端新手。同时分为两个文件serverImage和clientImage,其中包含项目源码,一些配置文件,以及后端需要处理的...

    课程设计基于Java开发的个人博客前端+服务端源码.zip

    课程设计基于Java开发的个人博客前端+服务端源码.zip课程设计基于Java开发的个人博客前端+服务端源码.zip课程设计基于Java开发的个人博客前端+服务端源码.zip课程设计基于Java开发的个人博客前端+服务端源码.zip课程...

    js 导出 Excel 测试 demo【支持大量数据导出,10w条数据大约3秒】

    js 导出 Excel 【支持大量数据导出,亲测】、支持IE噢

    java导出excel文件并且下载到客户端(包括解决中文乱码).txt

    ### Java导出Excel文件并下载到客户端(含解决中文乱码问题) 在现代的企业级应用开发中,数据导出功能是非常常见的一种需求。特别是在B/S架构的应用中,用户经常需要将查询结果导出为Excel文件以便进行后续的数据...

    Netty 实现scoket 主动推送数据到服务和服务端实现方式

    客户端发送16进制给服务端,并行实现socket通道活动状态和断开重新连接的功能, 监听接口是否存在数据,如果存在socket客户端发送给socket服务端的实现 随着物联网的发展,随之出现了各种传感器监测数据的实时发送,...

    爬虫前端实训项目报告(含源代码包括前端和nginx服务端)

    爬虫前端实训项目报告(含源代码包括前端和nginx服务端)

    蓝牙客户端和服务端传输数据

    【蓝牙客户端和服务端传输数据】 蓝牙技术是一种短距离无线通信技术,广泛应用于移动设备、智能家居、医疗健康等领域。蓝牙客户端和服务端之间的数据传输是通过蓝牙协议栈实现的,该协议栈包括一系列层次结构的协议...

    易语言服务端客户端互换收发数据源码.rar

    客户端则负责连接到服务端,发送数据并接收服务端的回应。这种模式在许多网络应用中都非常常见,如即时通讯、文件传输等。 服务端程序的核心是创建一个监听套接字,设置好监听的端口号,然后进入循环等待状态,一旦...

    千年服务端

    "千年服务端"通常指的是一个基于网络的游戏服务器软件,它为玩家提供了一个在线游戏环境,使得用户能够通过互联网连接到这个服务器进行游戏。在本例中,"太极之章服务端"可能是“千年”游戏的一个特定版本或者扩展,...

Global site tag (gtag.js) - Google Analytics