每次做统计都要写新的JSP页面,有些调样式,有些要求打印,有些要求导出到Excel里面,有的还要查询,这篇弄个全的,以后要用了直接粘过来。
1、页面结构:
<body style="overflow:auto" onload="addSelected('${month}');"> <div id="print"> <input class="bginput but_1" onclick="printTures();" type="button" value="打印" /> <input id="idPrint3" class="but_1" type="button" value="打印预览" onclick="printpage();" /> <input id="excelBtn" class="but_1" type="button" value="导出为Excel" onclick="toExcel();" /> </div> <div id="queryItem"> 月份: <select id="month"> <option value="13">全部</option> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> <option value="6">6</option> <option value="7">7</option> <option value="8">8</option> <option value="9">9</option> <option value="10">10</option> <option value="11">11</option> <option value="12">12</option> </select> <input type="button" value="查询" onclick="queryOutCome();" /> </div> <div id="page" style="overflow:auto;"> <h2 id="queryTitle">${year }年<c:if test="${month==13}">全部</c:if><c:if test="${month!=13 }">${month }</c:if>月份数据统计</h2> <table cellspacing="0" cellpadding="0" border="0" width="95%" align="center" id="queryTable" > <tr id="firstTr"> <td>日期</td> <td>序号</td> <td>物品名称</td> <td>数量</td> <td>单价</td> <td>费用</td> <td>备注</td> </tr> <!-- 合计 --> <c:set var="field4" value="${0 }"></c:set> <c:forEach items="${t4List }" var="t4" varStatus="order"> <tr> <td><fmt:formatDate value="${t4.field3 }" type="date" pattern="M月dd日" ></fmt:formatDate></td><!-- 日期 --> <td>${order.index+1 }</td><!-- 序号 --> <td>${t4.field2}</td><!-- 物品名称 --> <td>${t4.field6}</td><!-- 数量 --> <td>${t4.field7}</td><!-- 单价 --> <td>${t4.field4}</td><!-- 费用 --> <c:set var="field4" value="${field4+t4.field4}"></c:set><!-- 费用合计 --> <td>${t4.field8}</td><!-- 备注 --> </tr> </c:forEach> <tr> <td colspan="5">合计</td> <td><fmt:formatNumber value="${field4 }" pattern="#.##" maxFractionDigits="2" minFractionDigits="2"></fmt:formatNumber></td> <td> </td> </tr> </table> </div> </body>
2、CSS:
<style type="text/css"> * { padding:0; margin:0; } body { font-family: "宋体"; color:#333; font-size:12px; line-height:20px; } table { border-collapse:collapse; border-spacing:0px; border:none; margin-top:15px; } table td{ border:1px solid #ccc; text-align:center} #print{ text-align:right;} .but_1 { width:102px; height:28px; line-height:28px; margin-bottom: 3px; border:0px; background:#006e57; color: #fff; cursor:pointer; font-size:14px; } table caption{ font-size:16px; margin:3px 0px 20px 0px;} #queryItem{ border-collapse:collapse; border-spacing:0px; border:none; margin-top:15px; margin-left:55px;} h2{ text-align:center; font-size:16px;} .memo{text-align:left;} </style>
3、引入的JS和JSTL库:
<script type="text/javascript" src="js/jquery-1.4.2.js"></script> <script type="text/javascript" src="js/print_utils2.js"></script> <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
4、各个小功能实现:
4.1 查询:
//点击查询按钮时触发该事件:根据月份查询每月的数据 function queryOutCome(){ var month = document.getElementById("month").value;//月份 var src="inOrOut!queryOutCome.action?month="+month+"&time="+new Date().getTime(); window.location=src; } //页面加载完成时触发该方法:根据返回来的月份填充select中的值 function addSelected(month){ jsSelectItemByValue(document.getElementById("month"),month); } //填充选中值 function jsSelectItemByValue(objSelect,objItemText){ for(var i=0;i<objSelect.options.length;i++) { if(objSelect.options[i].value == objItemText) { objSelect.options[i].selected = true; break; } } }
4.2 打印和打印预览:
/**断行换页**/ function fenye(){ var trH = $("#queryTable tr:eq(2)").height(); var count = Math.floor(500/trH)+1; if(trH>21){count= count+3;} //alert(trH+"\n"+count); $("#queryTable tr").each(function(i){ if(i>0) if(i%count==0){ $(this).attr("style","page-break-before:always");} }); } function printpage(){ //使用的smsx.cab查件进行的打印,所以需要添加这个object $("body").append('<OBJECT id="factory" codeBase="redist/smsx.cab#Version=6,3,434,26" height="0" width="0" classid="clsid:1663ed61-23eb-11d2-b92f-008048fdd814" viewastext></OBJECT>'); var printdiv = document.getElementById("page"); printdiv.style.overflow=""; // fenye(); previews(); printdiv.style.overflow="auto"; $("#factory").remove(); } /**打印*/ function printTures() { $("body").append('<OBJECT id="factory" codeBase="redist/smsx.cab#Version=6,3,434,26" height="0" width="0" classid="clsid:1663ed61-23eb-11d2-b92f-008048fdd814" viewastext></OBJECT>'); var printdiv = document.getElementById("page"); printdiv.style.overflow=""; printBase(); document.getElementById("print").style.display = "none";// 隐藏按钮 if(document.getElementById("queryItem")){//隐藏月份 document.getElementById("queryItem").style.display = "none"; var title = document.getElementById("queryTitle").innerText; document.getElementById("queryTitle").style.display = "none";//否则第一页会出现两个标题 title = "&b"+title+"&b"; factory.printing.header = title ; factory.printing.footer = "&b第&p页/共&P页&b";//显示页码 fenye(); } factory.printing.Print(false); document.getElementById("print").style.display = "block";// 显示按钮 if(document.getElementById("queryItem")){ document.getElementById("queryItem").style.display = "block"; document.getElementById("queryTitle").style.display = "block"; } $("#factory").remove(); } /**预览*/ function previews(){ printBase(); document.getElementById("print").style.display = "none";// 隐藏按钮 if(document.getElementById("queryItem")){//隐藏月份 document.getElementById("queryItem").style.display = "none"; var title = document.getElementById("queryTitle").innerText; document.getElementById("queryTitle").style.display = "none";//否则第一页会出现两个标题 // factory.printing.header = "居左显示&b居中显示&b居右显示页码,第&p页/共&P页" ; title = "&b"+title+"&b"; factory.printing.header = title ; factory.printing.footer = "&b第&p页/共&P页&b" fenye(); } factory.printing.Preview(); document.getElementById("print").style.display = "block";// 显示按钮 if(document.getElementById("queryItem")){ document.getElementById("queryItem").style.display = "block"; document.getElementById("queryTitle").style.display = "block"; } $("#factory").remove(); }
4.3导出到Excel中:
/** * 点击导出为Excel按钮时将当前表中的数据导出到Excel中 */ function toExcel(){ try { var oXL = new ActiveXObject("Excel.Application"); }catch(e) { alert( "要将该表导出到Excel,您必须安装Excel电子表格软件,同时浏览器须使用“ActiveX 控件”,您的浏览器须允许执行控件。"); return ""; } var oWB = oXL.Workbooks.Add(); //新增工作簿 var oSheet = oWB.ActiveSheet; //创建工作表 var sel=document.body.createTextRange(); sel.moveToElementText(document.getElementById("page"));//dataTable为table的id sel.select(); sel.execCommand("Copy"); oSheet.Paste(); //格式处理 var cellValue = oSheet.Cells(1,1).Value;//获取标题 var row = document.getElementById("firstTr").childNodes.length;//获取tr的个数用来合并标题 oSheet.Range(oSheet.Cells(1,1),oSheet.Cells(2,row)).mergecells=true;//合并两行 oSheet.Cells(1,1).Value=cellValue;//赋值 oSheet.Cells(1,1).HorizontalAlignment = 3;//水平对齐方式枚举* (1-常规,2-靠左,3-居中,4-靠右,5-填充 6-两端对齐,7-跨列居中,8-分散对齐) oSheet.Cells(1,1).VerticalAlignment = 2;//垂直对齐方式枚举*(1-靠上,2-居中,3-靠下,4-两端对齐,5-分散对齐) oXL.Visible = true; //设置excel为可见 oXL.UserControl = true; //很重要,不能省略,不然会出问题 意思是excel交由用户控制 oSheet = null; oWB = null; oXL = null; }
4.4 有时候还需要将阿拉伯数字的钱转换成大写的:
function changeNumMoneyToChinese(money) { var cnNums = new Array("零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"); //汉字的数字 var cnIntRadice = new Array("", "拾", "佰", "仟"); //基本单位 var cnIntUnits = new Array("", "万", "亿", "兆"); //对应整数部分扩展单位 var cnDecUnits = new Array("角", "分", "毫", "厘"); //对应小数部分单位 var cnInteger = "整"; //整数金额时后面跟的字符 var cnIntLast = "元"; //整型完以后的单位 var maxNum = 999999999999999.9999; //最大处理的数字 var IntegerNum; //金额整数部分 var DecimalNum; //金额小数部分 var ChineseStr = ""; //输出的中文金额字符串 var parts; //分离金额后用的数组,预定义 if (money == "") { return ""; } money = parseFloat(money); if (money >= maxNum) { alert('超出最大处理数字'); return ""; } if (money == 0) { ChineseStr = cnNums[0] + cnIntLast + cnInteger; return ChineseStr; } money = money.toString(); //转换为字符串 if (money.indexOf(".") == -1) { IntegerNum = money; DecimalNum = ''; } else { parts = money.split("."); IntegerNum = parts[0]; DecimalNum = parts[1].substr(0, 4); } if (parseInt(IntegerNum, 10) > 0) { //获取整型部分转换 var zeroCount = 0; var IntLen = IntegerNum.length; for (var i = 0; i < IntLen; i++) { var n = IntegerNum.substr(i, 1); var p = IntLen - i - 1; var q = p / 4; var m = p % 4; if (n == "0") { zeroCount++; } else { if (zeroCount > 0) { ChineseStr += cnNums[0]; } zeroCount = 0; //归零 ChineseStr += cnNums[parseInt(n)] + cnIntRadice[m]; } if (m == 0 && zeroCount < 4) { ChineseStr += cnIntUnits[q]; } } ChineseStr += cnIntLast; //整型部分处理完毕 } if (DecimalNum != '') { //小数部分 var decLen = DecimalNum.length; for (var i = 0; i < decLen; i++) { var n = DecimalNum.substr(i, 1); if (n != '0') { ChineseStr += cnNums[Number(n)] + cnDecUnits[i]; } } } if (ChineseStr == '') { ChineseStr += cnNums[0] + cnIntLast + cnInteger; } else if (DecimalNum == '') { ChineseStr += cnInteger; } return ChineseStr; }
相关推荐
JSP 运用模板导出 Excel 本文档主要介绍了使用 JSP 和 jxls 库来实现 Excel 文件的导出,针对 eMan 系统中普遍使用的导出 Excel 的方法 JXL 的缺陷,引入了一种新的方法来解决大规模报表的导出问题。 1. 背景 ...
根据excel模板动态导出数据库数据 package text; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.UUID; import javax.servlet....
Java编程语言在处理数据导出,特别是在生成Excel文件时,提供了多种库,其中之一就是jxls。...结合Apache POI的强大功能,jxls为Java开发者提供了一个强大而灵活的工具,用于处理Excel数据导出任务。
综上所述,实现JSP页面内容的Excel打印输出,需要掌握Apache POI等工具的使用,同时理解浏览器的打印机制和CSS的媒体查询。预览和打印规格定制则涉及到前端技术和对用户体验的考虑。在实际开发中,应确保安全性和...
**二、导出Excel到JSP** 1. **创建Excel文件**:在服务器端,使用Apache POI创建一个新的工作簿对象,然后添加工作表。根据需要设置标题行和其他格式。 2. **填充数据**:从数据库或其他数据源获取数据,使用POI ...
### 使用JSP实现Word、Excel格式报表打印 #### 一、使用JSP生成Word文档 在JSP中生成Word文档可以通过设置正确的`content-type`来实现。具体来说,只需要在JSP页面的头部添加以下指令: ```jsp ``` 这样设置后...
Java JSP调用iReport动态模板打印是一种在Web应用程序中实现报表打印的常见技术。iReport是一款开源的报表设计工具,它可以与Java、JSP、Servlets等进行集成,为开发者提供灵活的报表生成和打印功能。在这个场景下,...
标题中的“jxls+springmvc实现excel模板导出”指的是使用jxls库和Spring MVC框架来实现在Web应用中导出Excel模板的功能。jxls是一个Java库,它扩展了Apache POI库,允许开发者通过使用简单的Excel公式和指令在模板上...
通过JasperReport,我们可以将报表导出为PDF、Excel和Word格式。PDF适合阅读和打印,Excel适合数据分析,而Word则便于进一步编辑。在SpringMVC中,这些导出操作通常由控制器处理,将报表转换为目标格式并提供下载...
3. 编写Java代码:定义数据模型,使用`jxls`提供的API加载模板,绑定数据,最后导出Excel文件。 4. 运行和测试:运行代码,生成的Excel文件将按照模板和数据模型填充。 ### 五、示例代码 ```java import org.jxls...
在Web开发中,经常需要将服务器上生成的数据导出为Excel文件供用户下载。本文档将详细介绍如何使用Java Server Pages (JSP) 实现从服务器端下载Excel文件到客户端的过程。 #### 二、准备工作 1. **环境配置**: -...
利用JXL技术支持模板和非模板的表格导出
实现Excel导入与导出功能,并WEB页面附带进度条对Excel进行美化如:设置背景色、线条、格子大小等。 使用步骤很简单 1.解压下载好的项目,这里需要...(这里添加下载数据遍成为导出Excel功能了,清空数据遍为模板)
本篇将详细介绍jxls库及其在模板导出Excel中的应用。 首先,我们要了解什么是jxls。jxls是一个Java库,它扩展了Apache POI库的功能,使得我们可以通过简单的模板语法来处理Excel数据。Apache POI是用于读写...
首先,要理解JSP如何导出Excel,我们需要知道Servlet在其中的作用。Servlet是Java Web应用程序的一部分,用于处理HTTP请求并生成响应。在JSP导出Excel的场景中,JSP通常用于展示用户界面,而Servlet则负责生成Excel...
通过以上步骤,我们就可以在Spring MVC应用中集成Jett,实现动态生成和导出Excel文件的功能。这不仅可以提高用户体验,也有利于数据的管理和分析。如果你需要更多关于Jett和Spring MVC的详细信息,可以参考我的CSDN...
本教程将详细介绍如何使用JAVA POI库来创建一个包含图片的完整Excel导出功能。 首先,你需要在项目中引入Apache POI依赖。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```xml <groupId>org.apache....
【标题】:“ireport利用jsp导出excel&pdf;报表源代码” 【描述】:“本人验证过的jsp代码,ireport导出pdf excel报表” 在Java Web开发中,生成各种类型的报表是常见的需求,例如用于数据分析、业务统计或者数据...
总的来说,Apache POI和jxls是Java开发中导出Excel的强大工具,它们可以帮助我们轻松地处理各种复杂的Excel导出需求,无论是简单的数据列表还是复杂的报表模板。通过熟练掌握这两个库,你可以为用户提供高效、灵活的...