• SpringBoot(十三)_springboot上传Excel并读取excel中的数据


    今天工作中,发现同事在整理数据,通过excel上传到数据库。所以现在写了篇利用springboot读取excel中的数据的demo。至于数据的进一步处理,大家肯定有不同的应用场景,自行修改

    pom文件

        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-thymeleaf</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.apache.poi</groupId>
                <artifactId>poi</artifactId>
                <version>3.13</version>
            </dependency>
            <dependency>
                <groupId>org.apache.poi</groupId>
                <artifactId>poi-ooxml</artifactId>
                <version>3.13</version>
            </dependency>
    
        </dependencies>
    
    

    controller 代码

    
    @Controller
    public class ImportController {
    
        @Autowired
        private ImportService importService;
    
    
        @PostMapping(value = "/upload")
        @ResponseBody
        public String uploadExcel(HttpServletRequest request) throws Exception {
            MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
    
            MultipartFile file = multipartRequest.getFile("filename");
            if (file.isEmpty()) {
                return "文件不能为空";
            }
            InputStream inputStream = file.getInputStream();
            List<List<Object>> list = importService.getBankListByExcel(inputStream, file.getOriginalFilename());
            inputStream.close();
    
            for (int i = 0; i < list.size(); i++) {
                List<Object> lo = list.get(i);
                //TODO 随意发挥
                System.out.println(lo);
    
            }
            return "上传成功";
        }
    
    }
    
    

    service 代码

    @Service
    public class ImportService {
    
    
        /**
         * 处理上传的文件
         *
         * @param in
         * @param fileName
         * @return
         * @throws Exception
         */
        public List getBankListByExcel(InputStream in, String fileName) throws Exception {
            List list = new ArrayList<>();
            //创建Excel工作薄
            Workbook work = this.getWorkbook(in, fileName);
            if (null == work) {
                throw new Exception("创建Excel工作薄为空!");
            }
            Sheet sheet = null;
            Row row = null;
            Cell cell = null;
    
            for (int i = 0; i < work.getNumberOfSheets(); i++) {
                sheet = work.getSheetAt(i);
                if (sheet == null) {
                    continue;
                }
    
                for (int j = sheet.getFirstRowNum(); j <= sheet.getLastRowNum(); j++) {
                    row = sheet.getRow(j);
                    if (row == null || row.getFirstCellNum() == j) {
                        continue;
                    }
    
                    List<Object> li = new ArrayList<>();
                    for (int y = row.getFirstCellNum(); y < row.getLastCellNum(); y++) {
                        cell = row.getCell(y);
                        li.add(cell);
                    }
                    list.add(li);
                }
            }
            work.close();
            return list;
        }
    
        /**
         * 判断文件格式
         *
         * @param inStr
         * @param fileName
         * @return
         * @throws Exception
         */
        public Workbook getWorkbook(InputStream inStr, String fileName) throws Exception {
            Workbook workbook = null;
            String fileType = fileName.substring(fileName.lastIndexOf("."));
            if (".xls".equals(fileType)) {
                workbook = new HSSFWorkbook(inStr);
            } else if (".xlsx".equals(fileType)) {
                workbook = new XSSFWorkbook(inStr);
            } else {
                throw new Exception("请上传excel文件!");
            }
            return workbook;
        }
    
    }
    

    代码下载

    完整代码下载:github

  • 相关阅读:
    我是一只IT小小鸟读后感
    世界,是数字的。
    读书笔记之《HTML5 与 CSS3 基础教程》
    sharepoint 2010 使用程序向页面添加webpart
    SharePoint 2010 使用”日历重叠“功能
    将当前列表视图导出到Excel中
    SharePoint 2010 PowerShell(3)使用PowerShell管理列表
    SharePoint 2010 PowerShell(4)使用PowerShell管理文档库
    sharepoint 2010 配置备用访问映射
    SharePoint 2010 PowerShell(2)使用PowerShell管理网站
  • 原文地址:https://www.cnblogs.com/zhenghengbin/p/9490511.html
Copyright © 2020-2023  润新知