| | |
| | | import com.vincent.rsf.framework.common.Cools; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import org.apache.poi.hssf.usermodel.HSSFWorkbook; |
| | | import org.apache.poi.ss.usermodel.Row; |
| | | import org.apache.poi.ss.usermodel.Sheet; |
| | | import org.apache.poi.ss.usermodel.Workbook; |
| | | import org.apache.poi.poifs.filesystem.POIFSFileSystem; |
| | | import org.apache.poi.ss.usermodel.*; |
| | | import org.apache.poi.xssf.usermodel.XSSFWorkbook; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.io.IOException; |
| | |
| | | import java.lang.reflect.Modifier; |
| | | import java.net.URLEncoder; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.*; |
| | | |
| | | /** |
| | | * Created by vincent on 2/17/2024 |
| | |
| | | return workbook; |
| | | } |
| | | |
| | | /** |
| | | * Excel 导入 |
| | | * @param file 文件 |
| | | * @param keys 数据顺序 |
| | | */ |
| | | 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; |
| | | } |
| | | |
| | | } |