实时报表CSV导出调整为后台
This commit is contained in:
@@ -416,6 +416,9 @@ public class ExcelCsv {
|
|||||||
// 写入文件头部
|
// 写入文件头部
|
||||||
for (String title : titles) {
|
for (String title : titles) {
|
||||||
StringBuffer sb = new StringBuffer();
|
StringBuffer sb = new StringBuffer();
|
||||||
|
if(isDate(title)){
|
||||||
|
title=title + "\t";
|
||||||
|
}
|
||||||
String rowStr = sb.append("\"").append(title).append("\",").toString();
|
String rowStr = sb.append("\"").append(title).append("\",").toString();
|
||||||
csvWriter.write(rowStr);
|
csvWriter.write(rowStr);
|
||||||
}
|
}
|
||||||
@@ -437,9 +440,9 @@ public class ExcelCsv {
|
|||||||
tag = tag.replace("\"", "");
|
tag = tag.replace("\"", "");
|
||||||
}
|
}
|
||||||
// \t解决数字0开头字符串,0显示不出来的问题,比如邮编
|
// \t解决数字0开头字符串,0显示不出来的问题,比如邮编
|
||||||
if(tag.startsWith("0") && !tag.contains(".")){
|
/*if(tag.startsWith("0") && !tag.contains(".")){
|
||||||
tag = tag + "\t";
|
tag = tag + "\t";
|
||||||
}
|
}*/
|
||||||
if(isDate(tag)){
|
if(isDate(tag)){
|
||||||
tag=tag + "\t";
|
tag=tag + "\t";
|
||||||
}
|
}
|
||||||
@@ -509,18 +512,70 @@ public class ExcelCsv {
|
|||||||
public static boolean isDate(String strDate) {
|
public static boolean isDate(String strDate) {
|
||||||
Pattern pattern = Pattern
|
Pattern pattern = Pattern
|
||||||
.compile("^((\\d{2}(([02468][048])|([13579][26]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])))))|(\\d{2}(([02468][1235679])|([13579][01345789]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))(\\s(((0?[0-9])|([1-2][0-3]))\\:([0-5]?[0-9])((\\s)|(\\:([0-5]?[0-9])))))?$");
|
.compile("^((\\d{2}(([02468][048])|([13579][26]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])))))|(\\d{2}(([02468][1235679])|([13579][01345789]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))(\\s(((0?[0-9])|([1-2][0-3]))\\:([0-5]?[0-9])((\\s)|(\\:([0-5]?[0-9])))))?$");
|
||||||
if(strDate.trim().length()>= 10){
|
boolean flag=false;
|
||||||
String date=strDate.trim().substring(0, 10);
|
if(strDate.trim().length()>=10){
|
||||||
Matcher m = pattern.matcher(date);
|
strDate=strDate.trim().substring(0, 10);
|
||||||
if (m.matches()) {
|
Matcher m = pattern.matcher(strDate);
|
||||||
return true;
|
if (m.matches()) {
|
||||||
} else {
|
return true;
|
||||||
return false;
|
} else {
|
||||||
}
|
return false;
|
||||||
|
}
|
||||||
}else{
|
}else{
|
||||||
return false;
|
if(strDate.trim().length()==7){
|
||||||
|
pattern = Pattern.compile("^\\d{4}-\\d{2}$");
|
||||||
|
Matcher m = pattern.matcher(strDate);
|
||||||
|
if (m.matches()) {
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static <T> void ajaxCSVFile(HttpServletResponse response,List<String>titleList,List<List<String>>dataMap,String fileName,
|
||||||
|
String titleTime,Properties msgProp) {
|
||||||
|
try {
|
||||||
|
// 写入临时文件
|
||||||
|
File tempFile = File.createTempFile("vehicle", ".csv");
|
||||||
|
cs = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(tempFile), "utf-8"), 1024);
|
||||||
|
cs.write(new String(bom, charset));
|
||||||
|
//写入时间范围
|
||||||
|
if(!StringUtils.isEmpty(titleTime)){
|
||||||
|
cs.write(titleTime);
|
||||||
|
cs.newLine();
|
||||||
|
}
|
||||||
|
// 写入文件头部
|
||||||
|
writeHead(titleList, cs);
|
||||||
|
// 写入文件内容
|
||||||
|
for (List<String> row: dataMap) {
|
||||||
|
writeRow(row, cs);
|
||||||
|
}
|
||||||
|
cs.flush();
|
||||||
|
OutputStream out = response.getOutputStream();
|
||||||
|
byte[] b = new byte[10240];
|
||||||
|
File fileLoad = new File(tempFile.getCanonicalPath());
|
||||||
|
response.reset();
|
||||||
|
response.setContentType("application/octet-stream; charset=utf-8");
|
||||||
|
response.setHeader("Content-Disposition", "attachment; filename="+fileName);
|
||||||
|
long fileLength = fileLoad.length();
|
||||||
|
String length1 = String.valueOf(fileLength);
|
||||||
|
response.setHeader("Content_Length", length1);
|
||||||
|
FileInputStream in = new FileInputStream(fileLoad);
|
||||||
|
int n;
|
||||||
|
while ((n = in.read(b)) != -1) {
|
||||||
|
out.write(b, 0, n); // 每次写入out1024字节
|
||||||
|
}
|
||||||
|
in.close();
|
||||||
|
out.close();
|
||||||
|
deleteFile(tempFile);
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -2291,7 +2291,22 @@ public class BaseController {
|
|||||||
fileName = new String(fileName.getBytes("UTF-8"), "ISO8859-1");
|
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();
|
new ExportExcel(msgProp.getProperty(code, code),code,titleTime, headerList).ajaxDataList(dataList, code).write(response, fileName).dispose();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void _ajaxCsv(HttpServletRequest request, HttpServletResponse response,
|
||||||
|
String code,String titleTime,List<String> headerList, List<List<String>> dataList)
|
||||||
|
throws Exception{
|
||||||
|
Properties msgProp = getMsgProp();
|
||||||
|
String fileName = msgProp.getProperty(code, code) + "_" + DateUtils.getDate("yyyyMMddHHmmss")
|
||||||
|
+ ".csv";
|
||||||
|
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");
|
||||||
|
}
|
||||||
|
ExcelCsv.ajaxCSVFile(response,headerList,dataList,fileName,titleTime,msgProp);
|
||||||
}
|
}
|
||||||
|
|
||||||
public String initLogMap(BaseLogEntity log,String title){
|
public String initLogMap(BaseLogEntity log,String title){
|
||||||
|
|||||||
@@ -34,6 +34,27 @@ public class ExportController extends BaseController {
|
|||||||
}
|
}
|
||||||
_ajaxExport(request,response,titleCode, titleTime, heard, list);
|
_ajaxExport(request,response,titleCode, titleTime, heard, list);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@RequestMapping(value = "ajaxCsv")
|
||||||
|
public void ajaxCsv(String exports,HttpServletRequest request,HttpServletResponse response) throws Exception{
|
||||||
|
JSONObject jsonObject = JSONObject.fromObject(StringEscapeUtils.unescapeHtml(exports));
|
||||||
|
Map<String,Object> map=JSONObject.fromObject(jsonObject);
|
||||||
|
List<List<String>> list=(List<List<String >>) 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"));
|
||||||
|
if(!StringUtil.isEmpty(titleTime)){
|
||||||
|
if(titleTime.contains("\"")){
|
||||||
|
titleTime = titleTime.replaceAll("\"", "").trim();
|
||||||
|
}
|
||||||
|
if(titleTime.startsWith("[")){
|
||||||
|
titleTime = titleTime.substring(1, titleTime.length()-1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
_ajaxCsv(request,response,titleCode, titleTime, heard, list);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -631,9 +631,9 @@ white-space:nowrap;
|
|||||||
<i class="fa fa-wrench"></i> <spring:message code="export"></spring:message>
|
<i class="fa fa-wrench"></i> <spring:message code="export"></spring:message>
|
||||||
<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:;" onclick="getExport('${ctx}/export/ajaxExport')" ><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:;" onclick="getExport('${ctx}/export/ajaxCsv')" ><i class="fa fa-download"> <spring:message code="CSV"/></i></a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div class="btn-group">
|
<div class="btn-group">
|
||||||
|
|||||||
Reference in New Issue
Block a user