注意headArr 和fieldArr 数量和顺序都需保持一致即可
| |
| public void write(OutputStream out, String[] headArr, String sheetName, List<Map> dataList, String[] fieldArr) throws IOException { |
| EasyExcel.write(out).head(head(headArr)).sheet(sheetName).doWrite(dataList(dataList, fieldArr)); |
| } |
| |
| |
| private List<List<String>> head(String[] headMap) { |
| List<List<String>> list = new ArrayList<List<String>>(); |
| |
| for (String head : headMap) { |
| List<String> headList = new ArrayList<String>(); |
| headList.add(head); |
| list.add(headList); |
| } |
| return list; |
| } |
| |
| |
| private List<List<Object>> dataList(List<Map> dataList, String[] dataStrMap) { |
| List<List<Object>> list = new ArrayList<>(); |
| dataList.stream().forEach(map->{ |
| List<Object> data = new ArrayList<Object>(); |
| for (int i = 0; i < dataStrMap.length; i++) { |
| data.add(getString(map.get(dataStrMap[i]))); |
| } |
| list.add(data); |
| }); |
| return list; |
| } |
复制
使用模板导出List<Map>数据
| |
| File fileTemp = new File("D:/template.xlsx"); |
| File targetFile = new File("D:/test.xlsx"); |
| |
| ExcelWriterSheetBuilder sheetBuilder = EasyExcel.write().withTemplate(fileTemp).file(targetFile).head(head(headArr)).sheet(sheetName); |
| sheetBuilder.needHead(false).doWrite(dataList(dataList, fieldArr)); |
| out.flush(); |
| out.close(); |
复制
删除excel指定行以下所有行
| |
| private void delXlsxByRowNum(File fileTemp, Integer dataRow,File targetFile) { |
| FileUtils.copyFile(fileTemp, targetFile); |
| XSSFWorkbook wb = null; |
| FileOutputStream fileOutputStream=null; |
| try { |
| fileOutputStream = new FileOutputStream(targetFile); |
| wb = new XSSFWorkbook(new FileInputStream(fileTemp)); |
| XSSFSheet sheet = wb.getSheetAt(0); |
| if(dataRow<sheet.getLastRowNum()){ |
| for (int i = dataRow; i < sheet.getLastRowNum()+1; i++) { |
| Row row = sheet.getRow(i); |
| int lastRowNum = sheet.getLastRowNum(); |
| if (i >= 0 && i < lastRowNum) { |
| sheet.shiftRows(i + 1, lastRowNum, -1); |
| } |
| if (i == lastRowNum) { |
| if (row != null) { |
| sheet.removeRow(row); |
| } |
| } |
| i--; |
| } |
| } |
| wb.write(fileOutputStream); |
| fileOutputStream.flush(); |
| } catch (IOException e) { |
| e.printStackTrace(); |
| }finally { |
| if(wb!=null){ |
| try { |
| wb.close(); |
| } catch (IOException e) { |
| e.printStackTrace(); |
| } |
| } |
| if(fileOutputStream!=null){ |
| try { |
| fileOutputStream.close(); |
| } catch (IOException e) { |
| e.printStackTrace(); |
| } |
| } |
| } |
| |
| } |
复制