0
点赞
收藏
分享

微信扫一扫

java网页导出excel类 WebExcelUtil


定义:

package util;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.io.Writer;
import java.util.*;

/**
* Created by gcy
*/
public class WebExcelUtil {
private HttpServletResponse response;
private LinkedHashMap<String, String> header;
private List<LinkedHashMap<String, Object>> list;
private List<Map<String, Object>> maplist;
private OnItem onItem ;

/**
* 定义内部项处理事件,可传入:匿名函数、lambada或继承接口类
*/
public interface OnItem {
String event(String key,Object value,Map<String, Object> row);
}

private StringBuilder content;
public WebExcelUtil(){}
public WebExcelUtil(HttpServletResponse response, LinkedHashMap<String, String> header, List<LinkedHashMap<String, Object>> list){
this.response = response;
this.header = header;
this.list = list;
}

public static WebExcelUtil CreateInstance(HttpServletResponse response,LinkedHashMap<String, String> header, List<Map<String, Object>> maplist){
WebExcelUtil entity = new WebExcelUtil();
entity.response = response;
entity.header = header;
entity.maplist = maplist;
return entity;
}
public void writeFile(String fileName){
writeFile(fileName,null);
}
public void writeFile(String fileName,OnItem onItem){
try {
createContentString(onItem);
response.setCharacterEncoding("utf-8");
response.setHeader("contentType", "application/vnd.ms-excel");
try {
response.setHeader("Content-disposition", "attachment; filename="
+ new String(fileName.getBytes("UTF-8"), "ISO_8859_1")
);
Writer out = response.getWriter();
out.write(content.toString());
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
catch (Exception ex){
ex.printStackTrace();
}
}

private void createContentString(OnItem onItem){
if (header!=null && header.size()>0){
content = new StringBuilder();
content.append("<table border='1'>");
content.append("<tr>");
List<String> listHeader = new ArrayList<String>();
for(Map.Entry<String,String> entry : header.entrySet()){
content.append("<th>"+entry.getValue()+"</th>");
listHeader.add(entry.getKey());
}
content.append("</tr>");

if (list!=null && list.size()>0){
for(Map<String, Object> item : list){
content.append("<tr>");
for(String head : listHeader){
if (onItem!=null)
content.append("<td>"+onItem.event(head,item.get(head),item)+"</td>");
else
content.append("<td>"+item.get(head)+"</td>");
}
content.append("</tr>");
}
}
else if (maplist!=null && maplist.size()>0){
for(Map<String, Object> item : maplist){
content.append("<tr>");
for(String head : listHeader){
if (onItem!=null)
content.append("<td>"+onItem.event(head,item.get(head),item)+"</td>");
else
content.append("<td>"+item.get(head)+"</td>");
}
content.append("</tr>");
}
} {

}
content.append("</table>");
}
}

}


使用:

List<Map<String, Object>> list = schoolsTeacherService.listSchool(param);
LinkedHashMap<String, String> header = new LinkedHashMap<String, String>() {
{
put("id","id");
put("schoolName","学校名称");
put("alias","别名");
put("schoolType","学段");
put("provinceName","省份");
put("cityName","城市");
put("isElite","是否名校");
put("levels","名校等级");
put("createTime","创建时间");
put("updateTime","修改时间");
}
};

WebExcelUtil webExcelUtil = WebExcelUtil.CreateInstance(response,header,list);
webExcelUtil.writeFile("学校列表" + DateUtil.getCurrentDateTimeToSimpleString() + ".xls",
(key,value,row)->{//lambda表达式

int val ;
String ret ;
if (key.equalsIgnoreCase("schoolType")) {
val =(value==null?0:Integer.parseInt(value.toString()));
switch (val){
case 1: ret = "小学";break;
case 2: ret = "初中";break;
case 3: ret = "高中";break;
default:ret = "其他";break;
}
}else if (key.equalsIgnoreCase("isElite")) {
val =(value==null?0:Integer.parseInt(value.toString()));
switch (val){
case 1: ret = "名校";break;
default:ret = "非名校";break;
}
}
else {
ret = (value==null?"":value.toString());
}
return ret;
}
);



举报

相关推荐

0 条评论