easypoi版本自定义字典的使用方法


public class GlobalExcelDictHandler implements IExcelDictHandler{
	
	private static final Logger LOG = LoggerFactory.getLogger(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 getDictCache(String catalog){
		BiMap weekNameMap = HashBiMap.create();
		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
			.listeningDecorator(Executors.newFixedThreadPool(2));
	LoadingCache> cache = CacheBuilder.newBuilder()
			.refreshAfterWrite(30, TimeUnit.MINUTES).expireAfterAccess(1, TimeUnit.HOURS).maximumSize(50)
			.build(new CacheLoader>() {
				@Override
				// 当本地缓存命没有中时,调用load方法获取结果并将结果缓存
				public Map load(String key) {
					LOG.info("开始从远程读取缓存到本地");
					Map data = getDictCache(key);
					return data;
				}
				// 刷新
				@Override
				public ListenableFuture> reload(String key, Map oldValue)
						throws Exception {
					LOG.info("刷新远程读取缓存到本地");
					return refreshPools.submit(new Callable>() {
						@Override
						public Map call() throws Exception {
							LOG.info("开始从远程读取缓存到本地");
							Map data = getDictCache(key);
							return data;
						}
					});
				}
			});
	
	public static void main(String[] args) {
		try {
            ExportParams params = new ExportParams("商品一对多,对多,对多导出", "测试", ExcelType.XSSF);
            // 指定单元格转换字典
            params.setDictHandler(new GlobalExcelDictHandler());
            List goodsList = new ArrayList();
            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 = ExcelExportUtil.exportExcel(params, Are.class, goodsList );
            File saveFile = new File("excel");
            if (!saveFile.exists()) {
                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;
		}
		
	}
	
}

你可能感兴趣的:(java)