-
excel导入需要有相应的jar包支持,也就是第三方工具的支持,其中apache POI是处理excel的工具包之一
-
在spring本身处理excel中也有对文件的配置
// 文件的最大值 spring.servlet.
-
input 标签类型type 为file
-
javax.persistence 中Entity,Table,MultipartFile是什么,User对象
-
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{
}
}
}
thymeleaf
- thymeleaf html example
- bootstrap 4 cdn (css,javascript)
- jquery ajax google api
- enctype = multipart/form-data
<div class="row">
</div>
Excel File – Download from SpringBoot RestAPI + Apache POI + MySQL
How does HTTP file upload work?
What does enctype='multipart/form-data' mean?
从上所看我对http请求头内容知识欠缺ss