简单描述过程:访问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,返回物理路径,前端ajax进行下载
QQ客户端和服务端下载QQ客户端和服务端下载QQ客户端和服务端下载QQ客户端和服务端下载QQ客户端和服务端下载QQ客户端和服务端下载QQ客户端和服务端下载QQ客户端和服务端下载QQ客户端和服务端下载QQ客户端和服务端下载...
flask前端客户端和服务端传输文件,在前端可以直接下载源文件
客户端服务端数据传输源码客户端服务端数据传输源码客户端服务端数据传输源码客户端服务端数据传输源码客户端服务端数据传输源码客户端服务端数据传输源码客户端服务端数据传输源码客户端服务端数据传输源码客户端...
NestJS 入门到实战 前端必学服务端新趋势
客户端服务端数据传输可执行程序客户端服务端数据传输可执行程序客户端服务端数据传输可执行程序客户端服务端数据传输可执行程序客户端服务端数据传输可执行程序客户端服务端数据传输可执行程序客户端服务端数据传输...
后端使用js+express,读取csv文件存储到内存,前端需要那一段的数据,后端就给前端那一页的数据。非常适合前端新手。同时分为两个文件serverImage和clientImage,其中包含项目源码,一些配置文件,以及后端需要处理的...
课程设计基于Java开发的个人博客前端+服务端源码.zip课程设计基于Java开发的个人博客前端+服务端源码.zip课程设计基于Java开发的个人博客前端+服务端源码.zip课程设计基于Java开发的个人博客前端+服务端源码.zip课程...
爬虫前端实训项目报告(含源代码包括前端和nginx服务端)
数据同步服务端。采用xfire框架开发的webservice数据同步程序。
客户端发送16进制给服务端,并行实现socket通道活动状态和断开重新连接的功能, 监听接口是否存在数据,如果存在socket客户端发送给socket服务端的实现 随着物联网的发展,随之出现了各种传感器监测数据的实时发送,...
项目范围:纯前端; 项目内容:luckysheet在线编辑Excel导出,Excel文件导入; 项目运行:直接浏览器运行index.html
AJAX从服务端获取数据的三种方法 1.从服务端获得XML格式的数据 2.直接获得<option>...内容的字符串 3.从服务端返回javascript代码,在客户端使用eval函数执行
客户端(Web/ApiClient/queryToken.aspx )以post方式提交json数据来访问API服务端(WebApi:ApiServe/queryToken.aspx),api服务端接受到数据在云端处理以后在以json的形式返回给客户端 步骤:1.修改客户端: WebWeb:...
nuxt3服务端获取数据demo.rar. nuxt3. Ts ssr 在服务端获取数据,随html一起返回浏览器的demo。封装好的 get 跟post请求 可以方便移植到项目中,或者直接在这修改!欢迎下载。免c币下载地址:...
易语言服务端客户端互换收发数据源码,服务端客户端互换收发数据,客户发送数据,服务发送数据,获取通信数据,服务过程连接,客户过程连接,客户数据处理,服务数据处理
java导出excel文件并且下载到客户端(包括解决中文乱码)
连接千年服务器db数据库,修改数据.保存即可.