日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

java實現(xiàn)excel導入 java批量導入excel數(shù)據(jù)( 五 )

三、動態(tài)導出導入工具類封裝在實際使用開發(fā)中,我們不可能每來一個 excel 導入導出需求,就編寫一個方法,而且很多業(yè)務需求都是動態(tài)導入導出,沒辦法基于實體類注解的方式來讀取文件或者寫入文件
因此,基于動態(tài)參數(shù)化生成文件和動態(tài)監(jiān)聽器讀取文件方法,我們可以單獨封裝一套動態(tài)導出導出工具類,省的我們每次都需要重新編寫大量重復工作,以下就是小編我在實際使用過程,封裝出來的工具類,在此分享給大家!

  • 動態(tài)導出工具類
public class DynamicEasyExcelExportUtils {private static final Logger log = LoggerFactory.getLogger(DynamicEasyExcelExportUtils.class);private static final String DEFAULT_SHEET_NAME = "sheet1";/*** 動態(tài)生成導出模版(單表頭)* @param headColumns 列名稱* @returnexcel文件流*/public static byte[] exportTemplateExcelFile(List<String> headColumns){List<List<String>> excelHead = Lists.newArrayList();headColumns.forEach(columnName -> { excelHead.add(Lists.newArrayList(columnName)); });byte[] stream = createExcelFile(excelHead, new ArrayList<>());return stream;}/*** 動態(tài)生成模版(復雜表頭)* @param excelHead列名稱* @return*/public static byte[] exportTemplateExcelFileCustomHead(List<List<String>> excelHead){byte[] stream = createExcelFile(excelHead, new ArrayList<>());return stream;}/*** 動態(tài)導出文件* @param headColumnMap有序列頭部* @param dataList數(shù)據(jù)體* @return*/public static byte[] exportExcelFile(LinkedHashMap<String, String> headColumnMap, List<Map<String, Object>> dataList){//獲取列名稱List<List<String>> excelHead = new ArrayList<>();if(MapUtils.isNotEmpty(headColumnMap)){//key為匹配符,value為列名,如果多級列名用逗號隔開headColumnMap.entrySet().forEach(entry -> {excelHead.add(Lists.newArrayList(entry.getValue().split(",")));});}List<List<Object>> excelRows = new ArrayList<>();if(MapUtils.isNotEmpty(headColumnMap) && CollectionUtils.isNotEmpty(dataList)){for (Map<String, Object> dataMap : dataList) {List<Object> rows = new ArrayList<>();headColumnMap.entrySet().forEach(headColumnEntry -> {if(dataMap.containsKey(headColumnEntry.getKey())){Object data = https://www.jinnalai.com/fenxiang/dataMap.get(headColumnEntry.getKey());rows.add(data);}});excelRows.add(rows);}}byte[] stream = createExcelFile(excelHead, excelRows);return stream;}/*** 生成文件* @param excelHead* @param excelRows* @return*/private static byte[] createExcelFile(List> excelHead, List> excelRows){try {if(CollectionUtils.isNotEmpty(excelHead)){ByteArrayOutputStream outputStream = new ByteArrayOutputStream();EasyExcel.write(outputStream).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).head(excelHead).sheet(DEFAULT_SHEET_NAME).doWrite(excelRows);return outputStream.toByteArray();}} catch (Exception e) {log.error("動態(tài)生成excel文件失敗,headColumns:" + JSONArray.toJSONString(excelHead) + ",excelRows:" + JSONArray.toJSONString(excelRows), e);}return null;}/*** 導出文件測試* @param args* @throws IOException*/public static void main(String[] args) throws IOException {//導出包含數(shù)據(jù)內容的文件LinkedHashMap<String, String> headColumnMap = Maps.newLinkedHashMap();headColumnMap.put("className","班級");headColumnMap.put("name","學生信息,姓名");headColumnMap.put("sex","學生信息,性別");List<Map<String, Object>> dataList = new ArrayList<>();for (int i = 0; i < 5; i++) {Map<String, Object> dataMap = Maps.newHashMap();dataMap.put("className", "一年級");dataMap.put("name", "張三" + i);dataMap.put("sex", "男");dataList.add(dataMap);}byte[] stream = exportExcelFile(headColumnMap, dataList);FileOutputStream outputStream = new FileOutputStream(new File("/Users/panzhi/Documents/easyexcel-export-user5.xlsx"));outputStream.write(stream);outputStream.close();}}

推薦閱讀