easypoi版本⾃定义字典的使⽤⽅法public class GlobalExcelDictHandler implements IExcelDictHandler{
private static final Logger LOG = Logger(GlobalExcelDictHandler.class);
@Override
public String toName(String dict, Object obj, String name, Object value) {//导出
return getDictCache(dict).get(value);
}
@Override
public String toValue(String dict, Object obj, String name, Object value) {//导⼊
return getDictCache(dict).inverse().get(name);
}
public BiMap<String,String> getDictCache(String catalog){
BiMap<String,String> weekNameMap = ate();
if(catalog.equals("aDict")) {
weekNameMap.put("01A","代码01A");
weekNameMap.put("02A","代码02A");
}else if(catalog.equals("bDict")) {
weekNameMap.put("01B","代码01B");
weekNameMap.put("02B","代码02B");
}
return weekNameMap;
}
//定义⼀个本地缓存临时缓存字典数据
ListeningExecutorService refreshPools = MoreExecutors
.wFixedThreadPool(2));
LoadingCache<String, Map<String, String>> cache = wBuilder()
.refreshAfterWrite(30, TimeUnit.MINUTES).expireAfterAccess(1, TimeUnit.HOURS).maximumSize(50)
.build(new CacheLoader<String, Map<String, String>>() {
@Override
// 当本地缓存命没有中时,调⽤load⽅法获取结果并将结果缓存
public Map<String, String> load(String key) {
LOG.info("开始从远程读取缓存到本地");
Map<String, String> data = getDictCache(key);
return data;
}
// 刷新
@Override
public ListenableFuture<Map<String, String>> reload(String key, Map<String, String> oldValue)
throws Exception {
LOG.info("刷新远程读取缓存到本地");
return refreshPools.submit(new Callable<Map<String, String>>() {
@Override
public Map<String, String> call() throws Exception {
mkdirs方法LOG.info("开始从远程读取缓存到本地");
Map<String, String> data = getDictCache(key);
return data;
}
});
}
});
public static void main(String[] args) {
try {
ExportParams params = new ExportParams("商品⼀对多,对多,对多导出", "测试", ExcelType.XSSF);
// 指定单元格转换字典
params.setDictHandler(new GlobalExcelDictHandler());
List<Are> goodsList = new ArrayList<Are>();
List<Are> goodsList = new ArrayList<Are>();
goodsList.add(new Are("01A","01B"));
goodsList.add(new Are("01A","01B"));
goodsList.add(new Are("01A","01B"));
goodsList.add(new Are("01A","01B"));
Workbook workbook = portExcel(params, Are.class, goodsList );            File saveFile = new File("excel");
if (!ists()) {
saveFile.mkdirs();
}
FileOutputStream fos = new FileOutputStream("d:/aa.xlsx");
workbook.write(fos);
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public static class Are{
@Excel(name = "A标签",dict = "aDict")
private String a;
@Excel(name = "B标签",dict = "bDict")
private String b;
public Are() {}
public Are(String a, String b) {
super();
this.a = a;
this.b = b;
}
public String getA() {
return a;
}
public void setA(String a) {
this.a = a;
}
public String getB() {
return b;
}
public void setB(String b) {
this.b = b;
}
}
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。