利用ajax导出Excel文件

java利用HSSFWorkbook导出Excel 项目要求需要增加一个导出Excel功能时,整理网上的资料所做,方便下次项目可以直接使用。 首先引入所需要的maven包。 <!-- https://mvnrepository.com/artifact/org.apache.poi/poi --> <dependency> <groupId>org.apache.poi</groupId> &lt... 阅读详情

记得之前写过ajax无法弹出保存下载对话框,就直接使用form表单进行提交,下载Excel的。但是如果需要传递参数的话,需要使用隐藏空间,有时候还有些麻烦,而使用ajax传递参数很方便啊?!于是我们可以通过ajax导出Excel

htm代码如下:

<button type="button" class="btn green" onclick="rptDownLoad()"> 报 表 下 载  </button>
javaScript脚本代码如下:

		function rptDownLoad(){
		var rptId = $("#rptSelect").val();
		var date = $("#dateSelect").val();		
                var form = $("<form>");
	        form.attr('style', 'display:none');
	        form.attr('target', '');
	        form.attr('method', 'post');
	        form.attr('action', '/ODSMSPortlet/report/reportSys!exportRpt.action');
	        var input1 = $('<input>');
	        input1.attr('type', 'hidden');
	        input1.attr('name', 'rptId');
	        input1.attr('value', rptId);
	        var input2 = $('<input>');
	        input2.attr('type', 'hidden');
	        input2.attr('name', 'date');
	        input2.attr('value', date);
	        $('body').append(form);
	        form.append(input1);
	        form.append(input2);
	
	        form.submit();
	        form.remove();
		}
Action中处理如下:

	/**
	 * 报表下载
	 */
	public void exportRpt(){
		setDataObject();
		try{
			//项目中封装的dto可以直接获取js中传递的date和rptId
			String date = dto.getInput("date").toString();
			dhlCommonService.queryForObject("reportSys.selectRptList", dto);
			String rptName = dto.getOutputForJSONObject().getString("rptName");
			
			//获取报表标题中英文数组
			String header = dto.getOutputForJSONObject().getString("upHeaders");
			
			String headers[] = header.split("\\|");
			int len = headers.length;
			String name[] = new String[len];  //title为英文标题
			String title[] = new String[len];	//name为中文标题
			int index = 0;
			
			for(int i = 0 ; i<len ; i++){
				name[index] = headers[i].split("#")[0];
				title[index] = headers[i].split("#")[1];
				index++;
			}
			
			//查询sql,获取报表明细
			String sql = dto.getOutputForJSONObject().getString("sqlDesc");
			Map<String, Object> map = new HashMap<String,Object>();
			map.put("cycleId", date);
			dto.addInput("paramMap", map); 
			dhlCommonService.queryJSONArrayBySql(sql, dto);
			JSONArray rptArray = dto.getOutputForJSONArray();
			
			
			
			//设置输出流
			OutputStream out = response.getOutputStream(); 
			response.reset();
			String fileName = rptName+"_"+date;// 文件名 
			response.setHeader("Content-Disposition", "attachment;filename="+new String(fileName.getBytes("gbk"),"iso8859-1")+".xlsx");
			response.setContentType("application/x-download; charset=UTF-8");
			
			//生成Excel sheet
	        HSSFWorkbook wb = new HSSFWorkbook();   
	        HSSFSheet sheet = wb.createSheet(fileName); 
	        
	        //设置标题样式
	        HSSFCellStyle headStyle = wb.createCellStyle(); 
	        headStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
	        headStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
	        headStyle.setFillForegroundColor((short)13);
	        HSSFFont font = wb.createFont();
	        font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
	        headStyle.setFont(font);
	        
	        //设置内容样式
	        HSSFCellStyle style = wb.createCellStyle();  
	        style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 创建一个居中格式  
	        
	        HSSFRow row = sheet.createRow(0);
	        HSSFCell cell = null;
	        
	        //为Excel添加表头
	        for(int i = 0 ; i<len ; i++){
	        	cell = row.createCell(i);
		        cell.setCellValue(name[i]); 
		        cell.setCellStyle(headStyle); 
                        //设置列表宽度
		        sheet.setColumnWidth(i,name[i].toString().length() * 800); 
	        }
	        //为Excel添加数据
	        for(int j = 0 ; j<rptArray.size() ; j++){
	        	JSONObject jo = (JSONObject) rptArray.get(j);
	        	row = sheet.createRow(j+1);
	        	for(int k = 0 ; k<title.length ; k++){ //按照标题数组取值
	        		String content = jo.get(title[k]).toString();
	        		cell = row.createCell(k);
	        		cell.setCellValue(content);
	        		cell.setCellStyle(style);
	        	}
	        	
	        }
	        
	        
	        //将excel写入到response输出流
	        wb.write(out);
	        response.getOutputStream().flush();  
            response.getOutputStream().close(); 
			
			
		}catch(Exception e){
			e.printStackTrace();
		}
		
	}
	



ajax获取数据导出excel表格(表头可自定义) ajax获取数据导出excel表格 表头自定义 阅读详情

相关推荐

Jquery ajax请求导出Excel表格的实现代码

下面小编就为大家带来一篇Jquery ajax请求导出Excel表格的实现代码。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

使用Ajax导出Excel

最近有个需求是导出符合条件的数据的Excel文件。前端使用Ajax,和以前的前后端不分离项目不同。而后开始百度编程模式,得出一下结论: Ajax是无法直接导出Excel的,因为Ajax的返回值只能是字符流,而导出Excel是后台往浏览器中写入二进制的字节流。 导出Excel有以下两种方式: 方法一:window.location.href() & form表单.submit() <a href="javascript:void(0)" onclick="exportExcel()">导出

weixin_42455301的博客 5389

ajax实现excel报表导出

利用ajax实现excel报表导出【解决乱码问题】,供大家参考,具体内容如下 背景 项目中遇到一个场景,要导出一个excel报表。由于需要token验证,所以不能用a标签;由于页面复杂,所以不能使用表单提交。初步考虑前端使用ajax,后端返回流,定义指定的header。 第一版 主要代码 前端 使用jquery的ajax var queryParams = {test:xxx}; var url = xxx; $.ajax({ type : POST, //提交方式 url : url,//路径 contentType: application/json, dat

ajax请求url导出excel,ajax导出excel

ajax 是无法直接导出excel的,因为ajax返回值只能是字符流,而导出excel是后台往浏览器中写入二进制的字节流浏览器弹窗下载excel文件//response设置头文件response.setContentType("application/vnd.ms-excel");response.setHeader("Content-Disposition", "attachment; file...

weixin_34432821的博客 6328

simulink可控励磁同步电机模型分析

他励同步电机模型分析

qq_26681609的博客 5551

7 series FPGAs Transceiver Wizard IP核使用和测试

学习FPGA一段时间了,前面一直没有系统的总结,这学期把在项目中用到的IP核和一些调试过程中遇到的问题总结一下发出来,坚持下去,一起进步! 今天总结一下的GTH核的使用和测试。 软件版本:Vivado 2017.4 IP核版本:7 Series FPGAs Transceivers Wizard (3.6) FPGA:xc7vx690tfft1927 实现功能: 四路光纤数据接收,由于GTX IP...

qq_39921762的博客 1万+

jquery利用动态创建form表单下载文件,以及利用ajax先在后台生成文件之后回调自动触发a标签点击事件下载文件,导出excel

提交表单下载excel $('#exportExcel .layui-btn').on('click', function(){ var form = $('<form>'); form.attr('style','display:none'); form.attr('target',''); form.attr('method','post'); form.attr('action','/layui/downExcel') var inputC

奔跑的菜鸡 2056

搭建适用于lammps中opls-aa力场的文件流程

现在我已经解决了以上问题,并且通过我的方法可以实现从空白文档到搭建完成以上全部内容,后期只要细心检查即可。需要的data文件最关键是获得相应阴阳离子的mmol文件,因此问题转化为构建一份mmol文件。主要用到的软件及程序:gaussian09,makemol程序(tranal),opls-aa的参数文件。二面角个数:成角原子序号及对应的参数(这里PF6的结构没有二面角,所以为0)参考文献个数:文献名(空够行数即可,这些是给自己的备忘))和自身体系对应的参考文献,修改或填入对应的参数即可。

baguette的博客 2886

ajax response 导出文件

前段 form隐藏域 $.ajax({ url: createTxt/Excel, -- 在服务端生成文件 type:"POST", async: false, data:{data:queryData}, success: function (text) { mini.unmask(); var result=mini.decode(text); if(result.

HttpURLConnection 2310

IDEA集成selenium自动化测试(Java+Selenuim+testNG+Maven)

文章目录写在前面01 | 新建Maven项目02 | idea集成Selenium03 | 写在前面 因为软件测试的需求和博主比较经常使用Java,于是,想在Idea中集成selenuim,用Java编写测试代码,因此有了这篇文章来记录一下过程。 资源指路: java使用selenium实现模拟浏览器操作API大全 模拟登录 TestNG入门教程 感谢上面博客的大佬。 01 | 新建Maven项目 不使用骨架创建,直接点击左侧Maven,然后一路next即可。 02 | idea集成Sele

aLinxi的博客 8279

XGBoost与Embedding混合建模实战解析

在机器学习领域,特征工程与模型融合是提升预测性能的关键技术。Embedding技术通过将高维稀疏特征(如文本、ID类数据)转化为低维稠密向量,有效捕获语义关联;而XGBoost作为强大的集成学习算法,擅长处理结构化特征并进行自动特征组合。两者结合的混合架构(如Semantic Boosted Trees)在金融风控和推荐系统等场景中展现出显著优势,尤其在处理用户行为序列、商品ID等复杂特征时,相比传统方法能获得更好的模型效果。本文通过电商推荐和金融反欺诈等案例,详解如何实现Embedding+XGBoost

weixin_28718641的博客 324

c# 利用ajax导出excel

c# 利用ajax导出excel 步骤: 1.点击前台页面Excel下载按钮。 2.一般处理程序接收请求, 3.调用Npoi,将DataTable数据集(也可以是别的数据集list等)填充到Excel(提前创建好的模板),另存文件(原模板不会被写入数据) 4.拼接好另存文件地址,返回给前台 5.地址赋值给a标签,jquery模拟点击a标签事件,浏览器下载Excel 前台代码如下:使用a标签 <html> <head> <title></title&g

weixin_44310020的博客 702

zabbix添加IBM服务器SNMPV3监控

本地采用欧冠的是zabbix5.0,服务器型号是SR860,使用snmpv3因为只支持这个,醉了。说明:本地采用欧冠的是zabbix5.0,服务器型号是SR860。

萌新包大人的博客 1984

JAVA使用poi导出EXCEL

前端:如果你使用的是ajax类型的跨域导出,则无法出现弹框,所以直接选择window.location.href,具体操作看代码 后端:上面的地址为图片中的地址,如图 @GetMapping(value = "/export") public void exportSysTest(HttpServletRequest request, HttpServletResponse ...

帅帅的困哒哒 3967

Decoder如何工作、Transformer如何训练、以及exposure bias问题

1、结合图文描述Decoder中各个模块是什么,以及是如何工作的。2、transformer是如何训练的。3、exposure bias问题造成的原因及解决方法

m0_59113542的博客 3345

关于 SAP Fiori Elements 开发项目里的本地 annotation.xml 文件

文件通过引用 SAP 提供的标准词汇表和本地 OData 服务的元数据,为 Fiori Elements 应用定义了一个基础的注解结构。开发者可以在此基础上添加具体的注解,以满足特定的业务需求和界面定制。文件用于定义本地注解,以补充或覆盖来自后端 OData 服务的元数据。元素内添加具体的注解,以定制 Fiori Elements 应用的界面和行为。的架构,用于在本地注解中定义实体、类型和注解。这使得在本地注解中可以引用该 OData 服务的实体和类型。等,用于控制界面元素的显示和行为。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 471

利用Aspose.cells 将查询出的数据导出为excel,并在浏览器中下载。

正题前的唠叨 本人是才出来工作不久的小白菜一颗,技术很一般,总是会有遇到一些很简单的问题却不知道怎么做,这些问题可能是之前解决过的。发现这个问题,想着提升一下自己的技术水平,将一些学的新的‘好’东西记录下来,一是加深印象;二是以后可以作为参考;三是希望博友们可以提出不足和可以优化的地方,一起讨论。 本方法是通过ajax直接下载,当然也可以直接button下载,本方法类已经实现导入导出,请执行扩展。...

蓝颜摸过河 609

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

ajax嵌套ajax下载excel文件之问题解决

目录 一、场景介绍 二、设计过程 三、借助第三方平台来下载文件 四、不稳定性解决 一、场景介绍 按照模版导入excel文件,把符合规则的数据更新后,把异常数据导出excel,并记录导出原因。导入导出需要一键操作!!! 二、设计过程 用ajax上传文件,ajax上传成功后,在ajax的success中嵌套ajax实现文件的下载。 前端代码如下: <div id=...

阿尔法小师妹 1279

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Extjs在线导出Excel文件

例如:   $("#export").click(function() { var m = sensitiveWordsLightGrid.grid.getSelections(); if (m.length == 0) { Ext.Msg.confirm("提示", "确定要全部导出吗?", function(btn, pa...

奋斗的蜗牛 763

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

PHP 记录一下 AJAX导出EXECL

ajax异步导出execl表格 一、JS部分 $('.download').click(function(){ var url = "http://xxxx.com/group/bi/export"; var params = { from_date: '2017-09-01', to_date: '2017-09-08', group_id: 1 }; $.ajax({ type:'POST', url: url,

weixin_44779466的博客 667

记一次用java导入导出excel遇到的问题

解决excel导入导出的问题(导出excel不用ajax而用表单提交的方式来导出)

vcvictory的博客 2175

使用ajax导出excel的问题

var form = $("<form>"); form.attr('style', 'display:none'); form.attr('target', ''); form.attr('method', 'post'); form.attr('action', '${ctx}/summarySearchApp/exportExcelStatistics.do'); var input1 = $('<input>'); input1.attr('type', 'hidden..

my_ha_ha的博客 1866

SSM框架下的POI与ajax异步导出Excel文件功能

SSM框架下的POI与ajax异步导出Excel文件功能 一、pom.xml导入poi的jar包 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.1.2</version> </dependency> 二、jsp代码 <%@ page contentType

P187598的博客 521

python界面开发 导入excel文件选项_python django框架前端页面支持导出excel文件

实际业务中,针对每个产品线运营人员操作后台经常需要导出excel文件,本例采用抓取的爬虫数据,当后台数据在页面里显示完后,点击导出按钮,页面提示导出成功或失败信息,成功则导出Excel文件到static/xlsxfiles文件夹,全部导出后生成文件名为all_poemers.xlsx的excel文件,搜索某一用户后生成文件名为{{ poemer }}.xlsx的文件 ,{{ poemer }}为d...

weixin_39709367的博客 908

Ajax配合后端实现Excel的导出

一、需求 在我们的日常开发中,可能经常需要遇到excel的导出,以往excel的导出服务器端都是使用的 GET 方法,但是某些情况下,服务器端只能使用 POST 方法,那么我们有没有好的方法实现excel的导出呢,并且页面最好不要刷新。 二、实现思路 1、方案一:我们可以使用ajax拿到服务器端返回的 数据下载流,然后借助 Blob 对象,在动态的创建一个 a 链接,那么也可以实现。 2、方案二:动态创建一个 iframe 标签下载,这种方案可以POST请求可能就无法下载了。3、方案三:页面上动态的创建一个

huan的学习记录 1952
上一篇: POI导出Excel时候总是出现中文名乱码问题
下一篇: 基于CentOS的Hadoop分布式环境的搭建——你要知道自己到底该做哪些事儿
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值