实时报表Excel导出调整为后台导出
This commit is contained in:
@@ -2616,5 +2616,60 @@ public class ExportExcel {
|
|||||||
log.debug("Export success.");
|
log.debug("Export success.");
|
||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public <E> ExportExcel ajaxDataList(List<List<Object>>dataMap,String code){
|
||||||
|
for (int i = 0; i < dataMap.size(); i++) {
|
||||||
|
Row row = this.addRow(sheets.get(code),rownums.get(code),code);
|
||||||
|
int colunm = 0;
|
||||||
|
List<Object> list=dataMap.get(i);
|
||||||
|
for (int j = 0; j < list.size(); j++) {
|
||||||
|
this.addCell(row, colunm++,list.get(j), 0,null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public ExportExcel(String titleName,String code,String titleTime,List<String> headerList){
|
||||||
|
this.wb = new SXSSFWorkbook(500);
|
||||||
|
int j=0;
|
||||||
|
sheets=new HashMap<>();
|
||||||
|
rownums=new HashMap<>();
|
||||||
|
Sheet sheet = wb.createSheet(titleName);
|
||||||
|
if(!StringUtils.isEmpty(titleTime)){
|
||||||
|
rownums.put(code, 1);
|
||||||
|
}else{
|
||||||
|
rownums.put(code, 0);
|
||||||
|
}
|
||||||
|
sheets.put(code, sheet);
|
||||||
|
this.styles = createStyles(wb);
|
||||||
|
if(!StringUtils.isEmpty(titleTime)){
|
||||||
|
//添加一行数据
|
||||||
|
CellRangeAddress callRangeAddress = new CellRangeAddress(0,0,0,headerList.size()-1);
|
||||||
|
CellStyle style = styles.get("data");
|
||||||
|
Row timeRow = sheet.createRow(0);
|
||||||
|
timeRow.setHeightInPoints(16);
|
||||||
|
Cell cellt = timeRow.createCell(0);
|
||||||
|
cellt.setCellValue(titleTime);
|
||||||
|
sheet.addMergedRegion(callRangeAddress);
|
||||||
|
sheet.autoSizeColumn(0);
|
||||||
|
setBorderStyle(CellStyle.BORDER_THIN,callRangeAddress,sheet,wb);
|
||||||
|
}
|
||||||
|
Integer rownum=rownums.get(code);
|
||||||
|
Row headerRow = sheet.createRow(rownum++);
|
||||||
|
headerRow.setHeightInPoints(16);
|
||||||
|
for (int i = 0; i < headerList.size(); i++) {
|
||||||
|
Cell cell = headerRow.createCell(i);
|
||||||
|
cell.setCellStyle(styles.get("header"));
|
||||||
|
cell.setCellValue(headerList.get(i));
|
||||||
|
sheet.autoSizeColumn(i);
|
||||||
|
}
|
||||||
|
for (int i = 0; i < headerList.size(); i++) {
|
||||||
|
int colWidth = sheet.getColumnWidth(i)*2;
|
||||||
|
sheet.setColumnWidth(i, colWidth < 3000 ? 3000 : colWidth);
|
||||||
|
}
|
||||||
|
j++;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2277,6 +2277,24 @@ public class BaseController {
|
|||||||
ByteArrayOutputStream out = new ByteArrayOutputStream();
|
ByteArrayOutputStream out = new ByteArrayOutputStream();
|
||||||
ExcelCsv.writeCSVFile(response,titleList,headMap,dataList,fileName,titleTime,msgProp);
|
ExcelCsv.writeCSVFile(response,titleList,headMap,dataList,fileName,titleTime,msgProp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void _ajaxExport(HttpServletRequest request, HttpServletResponse response,
|
||||||
|
String code,String titleTime,List<String> headerList, List<List<Object>> dataList)
|
||||||
|
throws Exception{
|
||||||
|
Properties msgProp = getMsgProp();
|
||||||
|
String fileName = msgProp.getProperty(code, code) + "_" + DateUtils.getDate("yyyyMMddHHmmss")
|
||||||
|
+ ".xlsx";
|
||||||
|
fileName = fileName.replaceAll(" ", "_");
|
||||||
|
if (request.getHeader("User-Agent").toUpperCase().indexOf("MSIE") > 0) {
|
||||||
|
fileName = URLEncoder.encode(fileName, "UTF-8");
|
||||||
|
} else {
|
||||||
|
fileName = new String(fileName.getBytes("UTF-8"), "ISO8859-1");
|
||||||
|
}
|
||||||
|
new ExportExcel(msgProp.getProperty(code, code),code,titleTime, headerList).ajaxDataList(dataList, code).write(response, fileName).dispose();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
public String initLogMap(BaseLogEntity log,String title){
|
public String initLogMap(BaseLogEntity log,String title){
|
||||||
Properties msgProp = getMsgProp();
|
Properties msgProp = getMsgProp();
|
||||||
String logTime=msgProp.getProperty(title,title);;
|
String logTime=msgProp.getProperty(title,title);;
|
||||||
|
|||||||
@@ -0,0 +1,29 @@
|
|||||||
|
package com.nis.web.controller.report;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
import org.apache.commons.lang.StringEscapeUtils;
|
||||||
|
import org.springframework.stereotype.Controller;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import com.nis.web.controller.BaseController;
|
||||||
|
import net.sf.json.JSONObject;
|
||||||
|
|
||||||
|
@Controller
|
||||||
|
@RequestMapping("${adminPath}/export")
|
||||||
|
public class ExportController extends BaseController {
|
||||||
|
|
||||||
|
@RequestMapping(value = "ajaxExport")
|
||||||
|
public void ajaxExport(String exports,HttpServletRequest request,HttpServletResponse response) throws Exception{
|
||||||
|
JSONObject jsonObject = JSONObject.fromObject(StringEscapeUtils.unescapeHtml(exports));
|
||||||
|
Map<String,Object> map=JSONObject.fromObject(jsonObject);
|
||||||
|
List<List<Object>> list=(List<List<Object>>) map.get("book");
|
||||||
|
List<String> heard=(List<String>) map.get("heard");
|
||||||
|
String titleTime=String.valueOf(map.get("titleTime"));
|
||||||
|
String titleCode=String.valueOf(map.get("titleCode"));
|
||||||
|
_ajaxExport(request,response,titleCode, titleTime, heard, list);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
<%@ page contentType="text/html;charset=UTF-8"%>
|
<%@ page contentType="text/html;charset=UTF-8"%>
|
||||||
<%@ include file="/WEB-INF/include/taglib.jsp"%>
|
<%@ include file="/WEB-INF/include/taglib.jsp"%>
|
||||||
<script>
|
<script>
|
||||||
function pagination() {
|
function pagination(pageSizes) {
|
||||||
|
|
||||||
pageNo = 1;
|
pageNo = 1;
|
||||||
count = $('tbody').children().size();// 总记录数
|
count = $('tbody').children().size();// 总记录数
|
||||||
@@ -15,8 +15,10 @@ function pagination() {
|
|||||||
//$('tbody').children().slice(0, preCount).remove();
|
//$('tbody').children().slice(0, preCount).remove();
|
||||||
} */
|
} */
|
||||||
|
|
||||||
|
if(pageSizes==null || pageSizes=='' ){
|
||||||
pageSize = 30; // 页面大小
|
pageSizes=30;
|
||||||
|
}
|
||||||
|
pageSize = pageSizes; // 页面大小
|
||||||
first = 1;// 首页索引
|
first = 1;// 首页索引
|
||||||
last = Math.ceil(count/pageSize);// 尾页索引
|
last = Math.ceil(count/pageSize);// 尾页索引
|
||||||
length = 8;// 显示页面长度
|
length = 8;// 显示页面长度
|
||||||
|
|||||||
@@ -74,13 +74,13 @@ $(document).ready(function() {
|
|||||||
loading('<spring:message code="onloading"/>');
|
loading('<spring:message code="onloading"/>');
|
||||||
var suffix = $(this).data("export-type");
|
var suffix = $(this).data("export-type");
|
||||||
|
|
||||||
totaltb(1,-1);
|
//totaltb(1,-1);
|
||||||
getExportHead();
|
getExportHead();
|
||||||
var te = $(".in table").tableExport({
|
var te = $(".in table").tableExport({
|
||||||
headings:true,
|
headings:true,
|
||||||
footers:true,
|
footers:true,
|
||||||
formats:[suffix],
|
formats:[suffix],
|
||||||
fileName: getFileName(),
|
fileName: getFileName('csv'),
|
||||||
bootstrap:false
|
bootstrap:false
|
||||||
});
|
});
|
||||||
$(".exportFirst").remove();
|
$(".exportFirst").remove();
|
||||||
@@ -114,16 +114,21 @@ $(document).ready(function() {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function getFileName() {
|
function getFileName(type) {
|
||||||
var cfgName = $("[name=cfgName2]").val() + "_";
|
var cfgName = $("[name=cfgName2]").val() + "_";
|
||||||
if ("${bean.serviceId}") {
|
if ("${bean.serviceId}") {
|
||||||
var action = $("[name=serviceId]").find('[value=' + "${bean.serviceId}" + ']').text() + "_";
|
var action = $("[name=serviceId]").find('[value=' + "${bean.serviceId}" + ']').text() + "_";
|
||||||
} else {
|
} else {
|
||||||
var action = "";
|
var action = "";
|
||||||
}
|
}
|
||||||
var reportType = $("[name=reportType]").find('[value=' + "${bean.reportType}" + ']').text() + "_";
|
var reportType = $("[name=reportType]").find('[value=' + "${bean.reportType}" + ']').text()
|
||||||
//var reportTime = "${bean.reportTime}";
|
//var reportTime = "${bean.reportTime}";
|
||||||
return cfgName + action + reportType + getStringFormatDate();
|
if(type=='xlsx'){
|
||||||
|
return cfgName + action + reportType;
|
||||||
|
}else{
|
||||||
|
return cfgName + action + reportType + "_"+ getStringFormatDate();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function getStringFormatDate() {
|
function getStringFormatDate() {
|
||||||
@@ -353,10 +358,11 @@ function customColumnClick(){
|
|||||||
if(rows.length > 1){
|
if(rows.length > 1){
|
||||||
var trtotal="";
|
var trtotal="";
|
||||||
if(reportBusinessType=="src_ip_report"){
|
if(reportBusinessType=="src_ip_report"){
|
||||||
trtotal+="<td colspan='2' style='text-align: left;' ><spring:message code='report_total' /></td>";
|
trtotal+="<td style='text-align: left;' ><spring:message code='report_total' /></td><td></td>";
|
||||||
}else{
|
}else{
|
||||||
trtotal+="<td style='text-align: left;'><spring:message code='report_total' /></td>";
|
trtotal+="<td style='text-align: left;'><spring:message code='report_total' /></td>";
|
||||||
}
|
}
|
||||||
|
|
||||||
for (var k = 0; k < list.length; k++) {
|
for (var k = 0; k < list.length; k++) {
|
||||||
trtotal+="<td>"+list[k]+"</td>";
|
trtotal+="<td>"+list[k]+"</td>";
|
||||||
}
|
}
|
||||||
@@ -437,8 +443,76 @@ function customColumnClick(){
|
|||||||
iframe: true,
|
iframe: true,
|
||||||
append: null
|
append: null
|
||||||
});
|
});
|
||||||
pagination();
|
pagination(30);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function getExport(url){
|
||||||
|
loading('<spring:message code="onloading"/>');
|
||||||
|
var reportBusinessType=$("#reportBusinessType").val()
|
||||||
|
var tableId="tagTable";
|
||||||
|
if(reportBusinessType=="label_report"){
|
||||||
|
tableId="tagTable";
|
||||||
|
}else if(reportBusinessType=="lwhh_report"){
|
||||||
|
tableId="lwhhTable";
|
||||||
|
}else if(reportBusinessType=="src_ip_report"){
|
||||||
|
tableId="contentTable1";
|
||||||
|
}else if(reportBusinessType=="attr_type_report"){
|
||||||
|
tableId="attrTypeTable";
|
||||||
|
}else if(reportBusinessType=="dest_ip_report"){
|
||||||
|
tableId="destIpTable";
|
||||||
|
}else if(reportBusinessType=="isp_report"){
|
||||||
|
tableId="entranceIdTable";
|
||||||
|
}
|
||||||
|
var timeType = $("#reportType").find("option:selected").text();
|
||||||
|
var time = $("#intype").val();
|
||||||
|
var tabName = $("#liwhite").find("li[class='active'] a").attr("title");
|
||||||
|
var titleCode= getFileName('xlsx');
|
||||||
|
var heardTime="<spring:message code='${bean.cfgName}'/> "+timeType+":"+time+" "+tabName;
|
||||||
|
pagination(99999999);
|
||||||
|
var tb=document.getElementById(tableId);
|
||||||
|
var rows=tb.rows;
|
||||||
|
var list=new Array();
|
||||||
|
list.splice(0,list.length);
|
||||||
|
var column=[]; //获取标题
|
||||||
|
var index=[];//获取数据列下标
|
||||||
|
var num=0;
|
||||||
|
$("#"+tableId+" thead tr th").each(function(){
|
||||||
|
if($(this).is(":visible")){
|
||||||
|
column.push($(this).text().trim());
|
||||||
|
index.push(num);
|
||||||
|
}
|
||||||
|
num++;
|
||||||
|
});
|
||||||
|
for(var i=1 ; i<rows.length;i++){
|
||||||
|
var rowMap=[];
|
||||||
|
for (var j = 0; j <index.length ; j++) {
|
||||||
|
var n=index[j];
|
||||||
|
if(rows[i].cells[n].innerHTML.trim().indexOf("...") !=-1){
|
||||||
|
if(rows[i].cells[n].title.length > 20){
|
||||||
|
rowMap.push(rows[i].cells[n].title);
|
||||||
|
}else{
|
||||||
|
rowMap.push(rows[i].cells[n].innerHTML.trim());
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
rowMap.push(rows[i].cells[n].innerHTML.trim());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
list[i-1]=rowMap;
|
||||||
|
}
|
||||||
|
var map={};
|
||||||
|
map.heard=column;
|
||||||
|
map.book=list;
|
||||||
|
map.titleTime=heardTime;
|
||||||
|
map.titleCode=titleCode;
|
||||||
|
var exports=JSON.stringify(map);
|
||||||
|
aJaxImportPost(url,{"exports":exports});
|
||||||
|
pagination(30);
|
||||||
|
closeTip();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
<style type="text/css">
|
<style type="text/css">
|
||||||
li{
|
li{
|
||||||
@@ -482,7 +556,6 @@ white-space:nowrap;
|
|||||||
<form:form id="searchForm" modelAttribute="bean" action="${ctx}/report/list" method="post" class="form-search">
|
<form:form id="searchForm" modelAttribute="bean" action="${ctx}/report/list" method="post" class="form-search">
|
||||||
<input id="functionId" name="functionId" type="hidden" value="${bean.functionId}"/>
|
<input id="functionId" name="functionId" type="hidden" value="${bean.functionId}"/>
|
||||||
<input name="cfgName" type="hidden" value="${bean.cfgName}"/>
|
<input name="cfgName" type="hidden" value="${bean.cfgName}"/>
|
||||||
|
|
||||||
<input name="cfgName2" type="hidden" value="<spring:message code="${bean.cfgName}"/>"/>
|
<input name="cfgName2" type="hidden" value="<spring:message code="${bean.cfgName}"/>"/>
|
||||||
<input name="serviceId2" type="hidden" value="<spring:message code="${bean.serviceId}"/>"/>
|
<input name="serviceId2" type="hidden" value="<spring:message code="${bean.serviceId}"/>"/>
|
||||||
|
|
||||||
@@ -552,7 +625,7 @@ white-space:nowrap;
|
|||||||
<i class="fa fa-angle-down"></i>
|
<i class="fa fa-angle-down"></i>
|
||||||
</button>
|
</button>
|
||||||
<ul class="dropdown-menu pull-right" style="min-width: 110px;" >
|
<ul class="dropdown-menu pull-right" style="min-width: 110px;" >
|
||||||
<li><a href="javascript:;" class="export-btn" data-export-type="xlsx"><i class="fa fa-download"> <spring:message code="Excel"/></i></a></li>
|
<li><a href="javascript:;" onclick="getExport('${ctx}/export/ajaxExport')" ><i class="fa fa-download"> <spring:message code="Excel"/></i></a></li>
|
||||||
<li><a href="javascript:;" class="export-btn" data-export-type="csv"><i class="fa fa-download"> <spring:message code="CSV"/></i></a></li>
|
<li><a href="javascript:;" class="export-btn" data-export-type="csv"><i class="fa fa-download"> <spring:message code="CSV"/></i></a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -112,4 +112,24 @@ Date.prototype.Format = function (fmt) {
|
|||||||
for (var k in o)
|
for (var k in o)
|
||||||
if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
|
if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
|
||||||
return fmt;
|
return fmt;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function aJaxImportPost(url, params) {
|
||||||
|
// 创建form元素
|
||||||
|
var temp_form = document.createElement("form");
|
||||||
|
// 设置form属性
|
||||||
|
temp_form .action = url;
|
||||||
|
temp_form .target = "_self";
|
||||||
|
temp_form .method = "post";
|
||||||
|
temp_form .style.display = "none";
|
||||||
|
// 处理需要传递的参数
|
||||||
|
for (var x in params) {
|
||||||
|
var opt = document.createElement("textarea");
|
||||||
|
opt.name = x;
|
||||||
|
opt.value = params[x];
|
||||||
|
temp_form .appendChild(opt);
|
||||||
|
}
|
||||||
|
document.body.appendChild(temp_form);
|
||||||
|
// 提交表单
|
||||||
|
temp_form .submit();
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user