请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于MultipartFile类接收EXCEL文件的问题

现有的做法是用MultipartFile类读取excel文件以后用transferTo()转存到硬盘上,请问能不能不用转存到硬盘直接用File类读取,试过将其强制转换成File类型结果报错。



目前做法的代码:

Controller层:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@RestController
@RequestMapping("/excel")
public class ExcelFileController { 
     
    //注入excel服务
    @Resource
    private ExcelService excelService;
     
    @RequestMapping(value = "/upload",method = RequestMethod.POST)
    public String ExcelFileUpload(@RequestParam("file") MultipartFile file){
        if(excelService.uploadExcelToSQL(file)){
            return "true";
        }else{
            return "false";
        }  
    }
}

Service层实现类:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
@Service
public class ExcelSerivceImpl implements ExcelService {
 
    /**
     * 将读取到的Excel文件存入数据库中接口实现
     */
    @Override
    public boolean uploadExcelToSQL(MultipartFile file) {
        if(!file.isEmpty()){
            Workbook workBook = null;
            File excelfile = new File("E:/upload/"+ file.getOriginalFilename());
            try {
                file.transferTo(excelfile);
            }catch (Exception e) {
                excelfile.delete();
                e.printStackTrace();
            }
             if(file.getOriginalFilename().toLowerCase().endsWith("xls")){
                 try {
                    workBook =ExcelUtil.getWorkbook(0, FileUtils.openInputStream(excelfile));
                catch (IOException e) {
                    excelfile.delete();
                    e.printStackTrace();
                }
             }else if(file.getOriginalFilename().toLowerCase().endsWith("xlsx")){
                 try {
                    workBook =ExcelUtil.getWorkbook(1, FileUtils.openInputStream(excelfile));
                catch (IOException e) {
                    excelfile.delete();
                    e.printStackTrace();
                }
             }else{
                 return false;
             }
             List<List<String>> excelString = ExcelUtil.getExcelString(workBook, 000);
             for(List<String> row : excelString){
                 for(String cellValue : row){
                     System.out.print(cellValue+", ");
                 }
                 System.out.println();
             }
             if(excelfile.isFile()&& excelfile.exists()){
                 excelfile.delete();
             }
            return true;
        }else{
            return false;
        }
    }
}


正在回答

插入代码

2回答

你用File读excel?然后呢?你怎么解析excel里的内容呢?

0 回复 有任何疑惑可以回复我~
  • 提问者 Unlimitedbladewo0 #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2017-07-04 16:33:09
  • 提问者 Unlimitedbladewo0 #2
    用apache POI
    回复 有任何疑惑可以回复我~ 2017-07-04 16:33:37
  • 看来你已经知道怎么处理了
    回复 有任何疑惑可以回复我~ 2017-07-04 16:45:44
提问者 Unlimitedbladewo0 2017-07-04 16:41:37

之前的思路是强制将用MultipartFile类获取的对象强制转换成File类型,但是不成功,用上面代码提供的方法就必须先存储到硬盘上,然后再用File类读取,但是我的目的是不想读写硬盘,不知道有没有解决方案


0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号