Skip to content

Instantly share code, notes, and snippets.

@upangka
Created January 1, 2020 15:18
Show Gist options
  • Save upangka/8948d8eac86fe3d5cc21a5bcdab2682e to your computer and use it in GitHub Desktop.
Save upangka/8948d8eac86fe3d5cc21a5bcdab2682e to your computer and use it in GitHub Desktop.
2020-01-01 java springboot excel ,csv,json import
  1. excel导入需要有相应的jar包支持,也就是第三方工具的支持,其中apache POI是处理excel的工具包之一

  2. 在spring本身处理excel中也有对文件的配置

    // 文件的最大值
    spring.servlet.
    
  3. input 标签类型type 为file

  4. javax.persistence 中Entity,Table,MultipartFile是什么,User对象

  5. CrudRepository spring这个对象

class User{
    private String userName;
    private String email;
}
public class SpringReadFileController{
    @Autowired private SpringReadFileService springReadFileService;
    @GetMapping("/")
    public String home(Model model){
        model.addAttribute("user",new User());
        List<User> users = springReadFileService.findAll();
        model.addAttribute("users",users);
        return "view/users";
    }

    @PostMapping("/fileupload")
    public String uploadFile(@ModelAttribute User user,RedirectAttrbibute ){
        boolean isFlag = springReadFileService.saveDataFromUploadfile(user.getFile());

        if(isFlag){

        }
    }
}
public class SpringReadFileService{
    public boolean saveDataFromUploadFile(MultipartFile file){
        boolean isFlag = false;
        String extension = FilenameUtils.getExtension(file.getOriginalFileName());
        if(extension.equalsIgnoreCase("csv")){
            
        }else if(extension.equalsIgnoreCase("xlsx")){

        }

        return false;
    }


    public boolean readDataFromJson(MultipartFile file){
        try{
            InputStream inputStream = file.getInputStream();
            ObjectMapper mapper = new ObjectMapper();
            List<User> users = Arrays.asList(mapper.readValue(inputStream,User[].class));
            if(users != null && users.size()>0){
                for(User user: users){
                    user.setFileType(FilenameUtils.getExtension(file.getOriginalFileName()));
                }
            }
            return true;
        }catch(Exception e){
            return false;
        }
    }


    public boolean readDataFromCsv(MultipartFile file){
        try{
            InputeStreamRead reader = new InputStreamReader(file.getInputStream());
            CSVReader csvReader = new CSVReaderBuilder(reader).withSkipLines(1).build();
            List<String[]> rows = csvReader.readAll();
            for(String[] row: rows){
                User user = User.builder()
                            .firstName(row[0])
                            .lastName(row[1]);
                // 插入数据库  
            }
            return true;
        }catch(Exception e){
            return false;
        }
    }

    public boolean readDataFromExcel(MultipartFile file){
        Workbook workbook = getWorkBook(file);
        Sheet sheet = workbook.getSheetAt(0);
        Iterator<Row> rows = sheet.iterator();
        rows.next();
        while(row.hasNext()){
            Row row = rows.next();
            User user = new User();
            if(row.getCell(0).getCellType() == Cell.CELL_TYPE_STRING){
                user.getFirstName(row.getCell(0).getStringCellValue());
            }
            if(row.getCell(1).getCellType() == Cell.CELL_TYPE_STRING){
                user.getFirstName(row.getCell(0).getStringCellValue());
            }
            if(row.getCell(2).getCellType() == Cell.CELL_TYPE_STRING){
                user.getFirstName(row.getCell(0).getStringCellValue());
            }
            if(row.getCell(3).getCellType() == Cell.CELL_TYPE_NUMBER){
                String phoneNumber = Numberter.toText(row.getCell(3).getNumericeCellValue());
                user.setPhoneNumber(phoneNumber);
            }
            if(row.getCell(3).getCellType() == Cell.CELL_TYPE_NUMBER){
                user.setPhoneNumber(row.getCell(3).getStringCellValue());
            }
            user.setFileType(FilenameUtils.getExtension(file.getOrigin))
        }
    }

    private Workbook getWorkbook(NultipartFile file){
        Workbook workbook = null;
        String extension = FilenameUtils.getExtension(file.getOriginalFileName());
        if(extension.equalsIgnoreCase("xlsx")){
            workbook = new XSSFWorkbook(file.getInputStream());
        }else{

        }
    }
}

template/view

thymeleaf

  1. thymeleaf html example
  2. bootstrap 4 cdn (css,javascript)
  3. jquery ajax google api
  4. enctype = multipart/form-data
<div class="row">

</div>

参考-web文件上传

1-视频参考链接

2-拓展链接


Excel File – Download from SpringBoot RestAPI + Apache POI + MySQL

深入解析 multipart/form-data

How does HTTP file upload work?

What does enctype='multipart/form-data' mean?

請求頭 Content-type

从上所看我对http请求头内容知识欠缺ss

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment