jsp导出Excel文件

在jsp页面通过一个按钮将数据库中的数据导出为excel文件 在项目过程中遇到要将数据通过一个按钮导出excel,网上找了很多的办法,现在找到一种,亲测有效, 1.先安装poi插件 我这边是通过poi插件进行的转换 <!-- https://mvnrepository.com/artifact/org.apache.poi/poi --> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> 阅读详情

jsp导出Excel文件


这种博客网上有很多了,但是有些由于浏览器版本问题,还有数据文本问题零碎的东西
结合我遇到的问题,在这里记录一下我自己的小笔记,欢迎大家来践踏,哈哈哈。
话不多说,直接上代码

以下是jsp

<table id="predetermineTable" class="table table-hover my-table table-bordered" style="width: 100%">
					<thead>
						<tr>
							<th>标题</th>
							<th>姓名</th>
							<th>身份证号</th>
							<th>单位</th>
							<th>活动开始时间</th>
							<th>活动结束时间</th>
							<th>报名时间</th>
							<th>状态</th>
						</tr>
					</thead>
					<tbody>
						<c:forEach items="${dataList}" var="item" varStatus="status">
							<tr id="dataRow_${item.announcementId}" class="dataRow" >
								<td>${item.announcementTitle}</td>
								<td>${item.realName}</td>
								<td style="mso-number-format:'\@';">${item.idCard}</td>
								<td>${item.unitsName}</td>
								<td>
									<fmt:formatDate value="${item.showStart}" pattern="yyyy-MM-dd HH:mm:ss"/>
								</td>
								<td>
									<fmt:formatDate value="${item.showEnd}" pattern="yyyy-MM-dd HH:mm:ss"/>
								</td>
								<td>
									<fmt:formatDate value="${item.createTime}" pattern="yyyy-MM-dd HH:mm:ss"/> 
								</td>
								<td>
									<c:if test="${item.predetermineStatus ==1}">有效</c:if>
									<c:if test="${item.predetermineStatus ==0}">无效</c:if>
								</td>
							</tr>
						</c:forEach>
					</tbody>
				</table>

以上是table部分要注意的是如下,是解决一串数字比如身份证号,银行账号等导出后变科学计数法的问题(这块主要针对IE吧,其它浏览器可以在table标签里直接设置style属性,下面有)

	<td style="mso-number-format:'\@';">${item.idCard}</td>

以下是js

	var idTmr;
function getExplorer() {
	var explorer = window.navigator.userAgent;
	// ie  判断IE浏览器的方式大都用这个,但是也有不好使的时候
	if (explorer.indexOf("MSIE") >= 0) {
		return 'ie';
	}
	//上边不好使就用这个方法判断是不是IE,因为只有IE才有ActiveX控件
	if (!!window.ActiveXObject || "ActiveXObject" in window) {
		return 'ie'; 
	}
	// firefox
	else if (explorer.indexOf("Firefox") >= 0) {
		return 'Firefox';
	}
	// Chrome
	else if (explorer.indexOf("Chrome") >= 0) {
		return 'Chrome';
	}
	// Opera
	else if (explorer.indexOf("Opera") >= 0) {
		return 'Opera';
	}
	// Safari
	else if (explorer.indexOf("Safari") >= 0) {
		return 'Safari';
	}
}

function exportToExcel(tableid) {// 整个表格拷贝到EXCEL中
	if (getExplorer() == 'ie') {
		var curTbl = document.getElementById(tableid);
		var oXL = new ActiveXObject("Excel.Application");

		// 创建AX对象excel
		var oWB = oXL.Workbooks.Add();
		// 获取workbook对象
		var xlsheet = oWB.Worksheets(1);
		// 激活当前sheet
		var sel = document.body.createTextRange();
		sel.moveToElementText(curTbl);
		// 把表格中的内容移到TextRange中
		sel.select;
		// 全选TextRange中内容
		sel.execCommand("Copy");
		// 复制TextRange中内容
		xlsheet.Paste();
		// 粘贴到活动的EXCEL中
		oXL.Visible = true;
		// 设置excel可见属性

		try {
			table = document.getElementById(table)
			// 这是作者用于命名Excel文件的方法,你有更好的方法那更好
			var table = document.getElementById("predetermineTable");
			var v0 = table.rows[1].cells[0].innerHTML;
			var filename = v0 + "预约报名表";
			
			var fname = oXL.Application.GetSaveAsFilename(filename+".xls",
					"Excel Spreadsheets (*.xls), *.xls");
		} catch (e) {
			print("Nested catch caught " + e);
		} finally {
			oWB.SaveAs(fname);
			oWB.Close(savechanges = false);
			// xls.visible = false;
			oXL.Quit();
			oXL = null;
			// 结束excel进程,退出完成
			// window.setInterval("Cleanup();",1);
			idTmr = window.setInterval("Cleanup();", 1);
		}
	} else {
		tableToExcel(tableid)
	}
}

function Cleanup() {
	window.clearInterval(idTmr);
	CollectGarbage();
}

var tableToExcel = (function() {
	var uri = 'data:application/vnd.ms-excel;base64,', 
	//准备好要生成Excel的模板
	template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" '
			+ 'xmlns:x="urn:schemas-microsoft-com:office:excel" '
			+ 'xmlns="http://www.w3.org/TR/REC-html40">'
			+ '<head>'
			+ '<!--[if gte mso 9]>'
			+ '<xml>'
			+ '<x:ExcelWorkbook>'
			+ '<x:ExcelWorksheets>'
			+ '<x:ExcelWorksheet>'
			+ '<x:Name>{worksheet}</x:Name>'
			+ '<x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions>'
			+ '</x:ExcelWorksheet>'
			+ '</x:ExcelWorksheets>'
			+ '</x:ExcelWorkbook>'
			+ '</xml>'
			+ '<![endif]-->'
			+ '</head>'
			+ '<body ><table style="vnd.ms-excel.numberformat:@">{table}</table></body>'
			+ '</html>',

	base64 = function(s) {
		return window.btoa(unescape(encodeURIComponent(s)))
	}, format = function(s, c) {
		return s.replace(/{(\w+)}/g, function(m, p) {
			return c[p];
		})
	}

	return function(table, name) {
		if (!table.nodeType)
		table = document.getElementById(table)
		// 获得主题名 命名文件名和excel标题
		var table = document.getElementById("predetermineTable");
		var v0 = table.rows[1].cells[0].innerHTML;
		var name = v0 + "预约报名表";
		//组好要导出的数据源
		var ctx = {
			worksheet : name || "Worksheet",
			//这里是作者主动加的excel标题(合并并居中)
			table : table.innerHTML.replace("<thead>","<thead><tr><th colspan='8'>"+name+"</th></tr>")
		}
		//format(template, ctx)这个方法就是类似于freemark一样,往模板里填数据
		//不需要改名字就如下直接输出
		//window.location.href = uri + base64(format(template, ctx));
		//需要改文件名字就如下
		var link = uri + base64(format(template, ctx));
		var a = document.createElement("a");
		a.download = name+".xls";
		a.href = link;
		a.click();
		//如果上面方法不行的话就用下面的方法
        //document.getElementById("predetermineExcelButton").href = uri + base64(format(template, ctx));
		//document.getElementById("predetermineExcelButton").download = "fhaio.xls";
		//document.getElementById("predetermineExcelButton").click();
	}
})()

有错的地方欢迎指正,谢谢 。
ps :第一次写博客,有不好的地方多多包涵~~~

Java与JSP结合导出数据为Excel文件的实践指南 JExcelAPI是一个用Java编写的库,专门用于读写Microsoft Excel格式的文件。它使Java开发者能够轻松地处理Excel文件,包括创建、编辑、读取和写入。由于Excel文件的普及,这个库在处理数据导出时非常有用,特别是在企业级应用中。JExcelAPI支持较旧的.xls格式,也支持较新的.xlsx格式,但后者需要通过Apache POI库实现。JExcelAPI库中,Workbook类用于表示整个Excel工作簿,它可以包含多个工作表(Sheet)。每个工作表由Sheet。 阅读详情

相关推荐

JSP导出Excel文件的方法

主要介绍了JSP导出Excel文件的方法,涉及JSP表格操作及excel文件的生成技巧,具有一定参考借鉴价值,需要的朋友可以参考下

jsp导出excel的方法

在Web应用中,很多数据经常要导出成Excel文档。在要求不高的情况,通过简单的html设置就可以实现将页面数据导出为excel。主要原理是通过html来表示excel数据,然后用excel软件打开。 方式一: (1) 能够导出为excel的jsp页面中最好删除表单元素,值留下纯数据和纯html代码。这样导出的excel格式等相对比较自然。如果有表单元素的话,导出的excel里也会是表...

几度信仰 1194

[图解]SysML与EA实战:住宅安全系统接口块设计全解析

本文详细解析了使用SysML和EA工具进行住宅安全系统接口块设计的全流程。从系统上下文图入门到接口块实战技巧,涵盖块定义图与内部块图的视角转换,以及多图协同建模方法论。特别分享EA工具的高效操作指南和常见问题避坑建议,帮助工程师掌握精确信号定义、端口方向设置等关键技能,提升安防系统设计效率。

weixin_29234509的博客 332

jsp导出Excel

导出Excel功能有多种方式,这里简单介绍一下直接将jsp导出方式。 直接上代码: 页面添加导出按钮,进入后台:   @RequestMapping(value = "/exportList") public ModelAndView exportList(HttpServletRequest request) { try { ...

447

HFSS入门学习笔记——微带一分四功分器的设计与仿真

功率分配器是将输入信号功率分成相等或不相等的几路功率输出的一种多端口无源微波网络,用于功率分配和功率合成。工程上常用的微带功分器有T型功分器和威尔金森功分器。经典的威尔金森功分器有几个缺点:①、多应用于低频段,高频段时,波长会与隔离电阻的尺寸相比拟,此时需要考虑电阻的分布参数效应;②、大功率应用时,隔离电阻的耗散功率要很大,因此隔离电阻的体积也会比较大。

weixin_42126696的博客 2万+

告别报错!Win10下Autodock Vina 1.2.3保姆级安装与避坑指南

本文提供了Win10系统下Autodock Vina 1.2.3的完整安装与实战指南,涵盖环境配置、分子文件预处理、对接参数优化及结果分析等关键步骤。通过详细的避坑技巧和优化方案,帮助用户高效完成分子对接任务,特别适合生物信息学研究人员和药物发现领域的初学者。

weixin_29969209的博客 402

JSP-从数据库读取内容,并生成Excel(含全部代码)_在jsp页面通过一个按钮将数据库中的数据导出为excel文件

Python编程学习,学习内容包含:语法、正则、文件、 网络、多线程等常用库,推荐《Python核心编程》,不要看完;在实际的渗透测试过程中,面对复杂多变的网络环境,当常用工具不能满足实际需求的时候,往往需要对现有工具进行扩展,或者编写符合我们要求的工具、自动化脚本,这个时候就需要具备一定的编程能力。在分秒必争的CTF竞赛中,想要高效地使用自制的脚本工具来实现各种目的,更是需要拥有编程能力.恭喜你,如果学到这里,你基本可以从事一份网络安全相关的工作,比如渗透测试、Web 渗透、安全服务、安全分析等岗位;

2401_83974607的博客 925

unity打包流程整理-Windows/Mac/Linux平台

1.Platform(平台)功能: 选择目标构建的目标平台选项PC, Mac & Linux Standalone: 适用于 Windows、Mac 和 Linux 平台2.Target Platform(目标平台)功能: 选择具体的操作系统版本选项Windows: 针对 Windows 操作系统Mac: 针对 macOS 操作系统Linux: 针对 Linux 操作系统3.Architecture(架构)功能: 选择应用程序的目标处理器架构选项x86: 针对 32 位系统。

weixin_42333247的博客 5135

如何把JSP页面导出到Excel中?

在此,强调一下搜索时关键词的重要性,这样一下子可以定位到文章,否则处于盲人摸象,毫无目的尴尬境地。本篇就是通过export jsp to excel找到的。 原文地址:How to Export Web Page to Excel (in JSP)? 本篇教程我们会看到如何把JSP页面导出到Excel中,会在已有的JSP页面中增加导出excel的功能。 许多时候对于用户来说,可以在e

Geek+Maker=? 2万+

【PCIe】CDNS PCIe VIP 杂记 -- Callback

最近在研究Cadence PCIe VIP,怎一个“惨淡”来描述。用的真是一言难尽啊,都是泪。记录一些最近学习的觉得想记录的内容在此,仅供参考讨论学习哈。有不对之处请指出大家一起讨论。

小邦是名小ICer的博客 2716

基于Multisim的模电调幅发射机仿真设计

振荡器产生的高频信号的功率很小,所以有必要对高频信号进行功率放大,有利于信号的调制发射。缓冲电路将主振荡器和高频功放电路相隔离,以减小功放电路对主振荡器的影响。缓冲电路可以用射极跟随器电路来实现,其作用就是前后级的阻抗相互匹配,减小前后级的影响。总电路的仿真结果见下图:示波器1~4分别是主振荡器、缓冲电路、高频放大电路和调幅电路的输出波形。由于载波频率稳定度≤10-3,所以可以采用并联型改进电容反馈式三端振荡器(Seiler电路)谐振回路,滤除其他频率的成分,得到与载波(假设。(1)缓冲电路的设计与实现。

Eve223322的博客 4575

Jsp 导出Excel,Word文件几种方法

1.直接输出table格式 资助项目名称:资助项目名称 流水号:流水号 资助编号: 资助编号 注意:乱码问题,页面保存为utf-8格式 编码格式转换: String s=""; s=new S

_修铁路的、的博客 887

生成模型实战 | MuseGAN详解与实现

人工智能音乐生成领域已引起了广泛关注,MuseGAN 是其中一个重要的模型。本节我们将使用 JSB Chorales 数据集来训练 MuseGAN,该数据集包含巴赫创作的四音轨合唱曲。在生成图像时,生成器使用的是来自潜在空间的单一噪声向量来生成不同格式的内容;而在 MuseGAN 中,生成器将使用四个噪声向量来生成一段音乐,旨在增强音乐生成过程中的可控行和多样性。每个噪声向量代表音乐的不同方面,通过单独调整这些向量,模型可以生成更复杂、更细腻的音乐作品。

盼小辉丶的博客 6554

jsp导出excel文件

jsp中导出excel相当方便,通过简单的js即可。js如下   function excelPrint(objStr,tag_id){   var tempStr = document.getElementById(tag_id).outerHTML;   var newWin = window.open();   newWin.document.write(tempStr);    ne...

田维宝博客 181

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

有关JSP页面导出EXCEL文件

暂时使用了两种方法可以分享一下: 1) 直接在JSP页面设置   设置之后,该页面的内容直接存为test2.xls的EXCEL文件。 好处是简单,但是生成的EXCEL文件不可控制,因此不算太好使。 2)使用Apache poi导出。 简单地说就是获取生成table的数据流,将其输出到设定好的EXCEL文件,过程是通过poi给的api操作。 HSSFWorkbook wb

paditang的博客 5388

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

java excel表格数据导入,JSP 导出EXCEL文件

  jxl操作excel包括对象Workbook,Sheet ,Cell。 一个excel就对应一个Workbook对象, 一个Workbook可以有多个Sheet对象 一个Sheet对象可以有多个Cell对象 读取excel操作 通过Workbook,Sheet ,Cell这三个对象我们就可以实现Excel文件的读取工作。步骤: 1、 选取Excel文件得到工作薄 2、 选择工作表 3、 选...

qq_41730508的博客 471

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

JSP导出Excel 中文文件名乱码

最近需要做一个Excel导出的功能,选择了POI插件,但是却发现JSP导出设置中文文件名会出现乱码,于是找了一些资料,希望对各位有帮助。 response.setHeader( "Content-Disposition", "inline;filename=" + new String( fileName.getBytes("gb2312"), "ISO8859-1" ) ); ...

Beyond_the_Limits的专栏 272

jsp做页面导出成word文件和excel文件

    做这个还是花了不少时间搜查资料,结果是网上没有一个是比较完整的应用举例。唉,现在国内牛人都习惯发布技术文章时遮遮掩掩,只截取部分代码都关键说明,这样的文章只能供自己完全明白,其他大概明白,新手完全不明白。    下面我总结一下导出word文件和excel文件的2种办法。    一. 方法一    1.开始操作的页面@ page contentType="text/html;char

落寞风聚沙—— 1万+

jsp/html导出excel文件

之前我在博客中也写过一篇关于导出文件的博文,但感觉限制性很大。最近做一个项目感觉此方式的导出文件比较通用,可以参考借鉴,以下为代码: 1.导出页面代码MyJsp.jsp <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+"

如风 1302

JSP 导出EXCEL文件

把JSP里面的contentType设置为: contentType="application/vnd.ms-excel; charset=UTF-8" 打开页面的时候就可以直接保存为一个EXCEL文件 代码示例     pageEncoding="UTF-8"%>     String path = req

9527 574

JSP上传文件与导出Excel表

我们可以通过Apache的fileupload组件来实现jsp上传文件,这样就不需要自己去写具体的实现了,首先需要配置如下依赖: <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileup...

weixin_34409822的博客 235

基于java一个简单的将jsp界面数据以excel文件导出方法的实现

有的时候网页需要导出页面所有的数据为excel文件,那么问题来了,方法千千万万,要怎么做呢? 我在这里使用的是Strust接收jsp界面action请求,后台调用数据库数据输入文件的方法,如果你不知道怎么导入Strust, 请百度。。。话不多说直接撸代码: <form action="writeExcel_write.do" method="post"> <inpu...

qq_36821441的博客 1366

JSP导出Excel文件

pageEncoding="UTF-8"%> SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String dateStr = format.format(new Date()); response.setContentType("Application/msexcel;

amzkqi的专栏 1356

基于servlet、jsp、mysql的Javaweb导入导出数据格式为excel文件的项目

在该类中,我们先从数据库中读取数据。然后,使用 jxl 库将数据导出到 Excel 文件中。在该表中,我们可以为每个字段设置一个对应的列名,在导入和导出数据时使用这些列名来操作数据。在该类中,我们先获取上传的 Excel 文件。然后,使用 jxl 库来读取 Excel 文件中的数据,并将其插入到数据库中。我们编写一个 Servlet 类来实现从 Excel 文件中读取数据并将其保存到数据库中。我们编写一个 Servlet 类来实现从数据库读取数据并将其导出为 Excel 文件。

m0_63064861的博客 2502
下一篇: Spring Cloud中使用Hystrix实现断路器实践
Diaos Coder
博客等级 码龄9年 9粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值