Excel导出方法 添加时间范围

This commit is contained in:
leijun
2018-12-20 17:18:34 +08:00
parent 5f99f6beb4
commit e916254c93
5 changed files with 182 additions and 17 deletions

View File

@@ -9,9 +9,11 @@ import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -25,6 +27,7 @@ import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.google.common.collect.Lists;
import com.nis.domain.basics.ServiceDictInfo;
import com.nis.util.DictUtils;
import com.nis.util.Encodes;
import com.nis.util.Reflections;
@@ -277,10 +280,16 @@ public class ExcelCsv {
// If is dict, get dict label
if (StringUtils.isNotBlank(ef.dictType())){
String valStr=val==null?"":val.toString();
if("type".equals(ef.dictType()) || "attribute".equals(ef.dictType())
|| "label".equals(ef.dictType())){
// Get basic info
val = getBasicInfo(ef.dictType(),map,valStr);
}else{
//字典数据已做国际化处理
String dict=DictUtils.getDictLabel(ef.dictType(), valStr, valStr);
//如果找不到字典国际化值,把字典本身作为默认值放进去,不然导出就是空了
val = msgProp.getProperty(dict,dict);
}
}
if(ef.title().equals("is_hex") && !StringUtil.isEmpty(val)){
@@ -303,6 +312,12 @@ public class ExcelCsv {
val ="";
}
}
if(!StringUtil.isEmpty(val)) {
if (val instanceof Date){
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
val=sdf.format(val);
}
}
}catch(Exception ex) {
log.error("Get entity value failed",ex);
val = "";
@@ -316,24 +331,40 @@ public class ExcelCsv {
return dataList;
}
public static <T> void writeCSVFile(HttpServletResponse response,List<String> titleList,Map<String, List<String>> headMap, Map<String, List<String>> dataMap,String fileName) {
public static <T> void writeCSVFile(HttpServletResponse response,List<String> titleList,Map<String, List<String>> headMap, Map<String, 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(titleList.size()>0){
List<String> heads=headMap.get(titleList.get(0));
for (int i = 0; i < titleList.size(); i++) {
if(i==0){
//写入时间范围
if(!StringUtils.isEmpty(titleTime)){
cs.write(titleTime);
cs.newLine();
}
}
List<String> heads=headMap.get(titleList.get(i));
if(i>0){
//写入域配置标题
cs.newLine();
if(!StringUtils.isEmpty(titleList.get(i))){
cs.write(msgProp.getProperty(titleList.get(i), titleList.get(i)));
cs.newLine();
}
}
// 写入文件头部
writeHead(heads, cs);
//获取文件内容
List<String> datas=dataMap.get(titleList.get(0));
List<String> datas=dataMap.get(titleList.get(i));
// 写入文件内容
for (String row : datas) {
writeRow(row, cs);
}
}
}
cs.flush();
OutputStream out = response.getOutputStream();
byte[] b = new byte[10240];
@@ -409,6 +440,56 @@ public class ExcelCsv {
}
csvWriter.newLine();
}
/**
* 设置性质、分类、标签等信息
* @param dictType
* @param map
* @param val
* @return
*/
public static String getBasicInfo(String dictType,Map map,String val) {
String basicInfo="";
List<ServiceDictInfo> list=new ArrayList<ServiceDictInfo>();
if("type".equals(dictType)){
list=(List<ServiceDictInfo>) map.get("fls");
for (String info : val.split(",")) {
for (ServiceDictInfo dictInfo : list) {
if(info.equals(dictInfo.getServiceDictId().toString())){
basicInfo+=","+dictInfo.getItemValue();
}
}
}
}
if("attribute".equals(dictType)){
list=(List<ServiceDictInfo>) map.get("xzs");
for (String info : val.split(",")) {
for (ServiceDictInfo dictInfo : list) {
if(info.equals(dictInfo.getServiceDictId().toString())){
basicInfo+=","+dictInfo.getItemValue();
}
}
}
}
if("label".equals(dictType)){
list=(List<ServiceDictInfo>) map.get("labels");
for (String info : val.split(",")) {
for (ServiceDictInfo dictInfo : list) {
if(info.equals(dictInfo.getServiceDictId().toString())){
basicInfo+=","+dictInfo.getItemValue();
}
}
}
}
if(!StringUtil.isEmpty(basicInfo)){
basicInfo=basicInfo.substring(1);
}
return basicInfo;
}
/**
* 功能:判断字符串是否为日期格式
*