| | |
| | | package com.vincent.rsf.server.common.utils; |
| | | |
| | | import cn.afterturn.easypoi.excel.entity.ImportParams; |
| | | import com.vincent.rsf.framework.common.Cools; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import org.apache.poi.hssf.usermodel.HSSFWorkbook; |
| | |
| | | continue; |
| | | } |
| | | |
| | | field.setAccessible(true); // 此行很重要,特别是字段为private时 |
| | | // 此行很重要,特别是字段为private时 |
| | | field.setAccessible(true); |
| | | Object value = null; |
| | | try { |
| | | value = field.get(t); |
| | |
| | | } |
| | | |
| | | /** |
| | | * Excel 导入 |
| | | * @param file 文件 |
| | | * @param keys 数据顺序 |
| | | * 添加导入excel配置参数 |
| | | * 注:默认配置可满足当前需求 |
| | | * @return |
| | | */ |
| | | public static List<Map<String, Object>> importExcel(MultipartFile file, String[] keys) throws Exception{ |
| | | Workbook wb = null; |
| | | String fileName = file.getOriginalFilename(); |
| | | if (fileName.endsWith("xls")) { |
| | | POIFSFileSystem pois = new POIFSFileSystem(file.getInputStream()); |
| | | wb = new HSSFWorkbook(pois); |
| | | } else if (fileName.endsWith("xlsx")) { |
| | | wb = new XSSFWorkbook(file.getInputStream()); |
| | | } |
| | | Sheet sheet = wb.getSheetAt(0); |
| | | int rowCount = sheet.getPhysicalNumberOfRows(); |
| | | if (sheet.getRow( 1).getPhysicalNumberOfCells() != keys.length){ |
| | | throw new RuntimeException("导入的Excel和模板的列不匹配"); |
| | | } |
| | | List<Map<String,Object>> result = new ArrayList<>(); |
| | | for (int i = 0; i < rowCount - 1; i++) { |
| | | Row row = sheet.getRow(i + 1); |
| | | Map<String,Object> tmp = new HashMap<>(); |
| | | for (int j = 0;j < keys.length; j++){ |
| | | Cell cell = row.getCell(j); |
| | | // 把类型转行String |
| | | // cell.setCellType(CellType.STRING); |
| | | tmp.put(keys[j], cell.getStringCellValue()); |
| | | } |
| | | result.add(tmp); |
| | | } |
| | | return result; |
| | | } |
| | | |
| | | /** |
| | | * 表头样式 |
| | | */ |
| | | private static CellStyle HeaderStyle(Workbook wb){ |
| | | Font font = wb.createFont(); |
| | | font.setFontName("宋体"); |
| | | font.setFontHeightInPoints((short) 11); |
| | | CellStyle cellStyle = commonStyle(wb); |
| | | cellStyle.setFont(font); |
| | | return cellStyle; |
| | | } |
| | | |
| | | /** |
| | | * 内容样式 |
| | | */ |
| | | private static CellStyle contentStyle(Workbook wb){ |
| | | Font font = wb.createFont(); |
| | | font.setFontName("宋体"); |
| | | font.setFontHeightInPoints((short) 10); |
| | | CellStyle cellStyle = commonStyle(wb); |
| | | cellStyle.setFont(font); |
| | | return cellStyle; |
| | | } |
| | | |
| | | /** |
| | | * 公共样式 |
| | | */ |
| | | private static CellStyle commonStyle(Workbook wb){ |
| | | CellStyle style = wb.createCellStyle(); |
| | | style.setAlignment(HorizontalAlignment.CENTER); |
| | | style.setVerticalAlignment(VerticalAlignment.CENTER); |
| | | style.setBorderBottom(BorderStyle.THIN); |
| | | style.setBorderLeft(BorderStyle.THIN); |
| | | style.setBorderTop(BorderStyle.THIN); |
| | | style.setBorderRight(BorderStyle.THIN); |
| | | style.setWrapText(true);// 自动换行 |
| | | return style; |
| | | public static ImportParams getDefaultImportParams() { |
| | | ImportParams params = new ImportParams(); |
| | | return params; |
| | | } |
| | | |
| | | } |