Springboot 는 POI 를 사용 하여 Excel 업로드 와 다운로드 기본 기능 을 실현 합 니 다.

1.POI 에서 Excel 대상 의 구조
Workbook(     Excel)  --createSheet()-->  
Sheet(sheet )            --createRow()-->   
Row(   )               --createCell()-->  
Cell(   )  
ooxml      HSSF   XSSF
Excel         ,             ,  demo

2.파일 다운로드
/**
* Excel       
* @author yuanye.wong
*/
public class ExcelUtil {
    public static HSSFWorkbook createWorkbook(String sheetName, String[] header){
        if (Objects.isNull(header) || header.length == 0) {
            return null;
        }
        if(sheetName == null) {
            sheetName = new String("sheet1");
        }
        HSSFWorkbook workbook = new HSSFWorkbook();
        //    sheetName
        HSSFSheet sheet = workbook.createSheet(sheetName);
        sheet.setDefaultColumnWidth(18);
        //     
        HSSFCellStyle headerStyle = workbook.createCellStyle();
        headerStyle.setFillForegroundColor(IndexedColors.LIGHT_GREEN.index);
        headerStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
        //      
        HSSFRow sheetRow = sheet.createRow(0);
        //       
        for (int i = 0; i < header.length; i++) {
            //        
            HSSFCell cell = sheetRow.createCell(i);
            //         
            HSSFRichTextString text = new HSSFRichTextString(header[i]);
            //     
            cell.setCellValue(text);
            cell.setCellStyle(headerStyle);
        }
        return workbook;
    }
}

//       
public HttpServletResponse generateTemplateDemo(HttpServletResponse response) {
    String[] titles = {"   ","  ","   "};
    String fileName = "    .xlsx";
    //   response  
    String fileNameURL = null;
    try {
        fileNameURL = URLEncoder.encode(fileName, "UTF-8");
    } catch (UnsupportedEncodingException e) {
        throw new AdminBusinessException(BusinessExceptionCode.FILE_NAME_ENCODE_ERROR);
    }
    //   contentType
    response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
    // ***   header(         )
    response.setHeader("Content-disposition", "attachment;filename="+fileNameURL+";"+"filename*=utf-8''"+fileNameURL);
    //   Excel
    HSSFWorkbook workbook = ExcelUtil.createWorkbook(null, titles);
    //       
    /*List list = getData();
    HSSFSheet sheet = workbook.getSheetAt(0);
    for (int i = 0; i < list.size(); i++) {
        //     
        HSSFRow row = sheet.createRow(i + 1);
        row.createCell(0).setCellValue(new HSSFRichTextString(details.get(i).getAttr01()));
        row.createCell(1).setCellValue(new HSSFRichTextString(details.get(i).getAttr02()));
        row.createCell(2).setCellValue(new HSSFRichTextString(details.get(i).getAttrXx()));
    }*/
    try {
        ServletOutputStream outputStream = response.getOutputStream();
        //      
        workbook.write(outputStream);
        outputStream.close();
        outputStream.flush();
    } catch (IOException e) {
        log.info("        :{}",e.getClass().getName());
    }
    return response;
}

3.파일 업로드
  • 인터페이스 사용form-data전 참,사용MultipartFile수신 파일 대상
  • MultipartFile입력 흐름 으로 전환,구조Workbook
  • POI 에서 Excel 대상 구조 에 따라 순차적으로 획득Sheet,Row,Cell 대상
  • 옮 겨 다 니 기Cell 각 cell 의 값 가 져 오기
  • // ***   cellType,        
    cell.setCellType(CellType.STRING);
    entity.setPhone(cell.getStringCellValue());

    좋은 웹페이지 즐겨찾기