hutool工具类实现excel上传 支持03和07

这篇具有很好参考价值的文章主要介绍了hutool工具类实现excel上传 支持03和07。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

感谢hutool工具类,让java上传excel 变得超级简便!!!
一直以来,excel表的导入有很多代码,写一次忘一次,类太多,要知道怎么获取Workbook、Sheet、Cell、row等等,这么多类不可能一直记的住,都是写过之后保存,使用的时候拿出来改改,更烦人的是针对office03和07获取方式还有区别。自从使用了hutool工具包,一切都变得那么丝滑。核心代码仅有一行。同时支持03和07。

 ExcelReader excelReader = ExcelUtil.getReader(file.getInputStream());

使用步骤及代码示例如下:
导入模板
hutool工具类实现excel上传 支持03和07,后端,hutool,excel导入,java

引入jar包

 		<dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-poi</artifactId>
            <version>5.7.16</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>4.1.2</version>
        </dependency>

工具类,也可以放入service实现类中

@Component
public class Excel07Utils {
	// static 属性的注入,如果是放入service实现类中,则不需要static修饰,直接注解注入
	// 第一种,set注入
    private static UserMapper userMapper;
    @Resource
    private void setUserMapper(UserMapper userMapper) {
        Excel07Utils.userMapper = userMapper;
    }
    // 第二种,lombok的set注入,需要引入lombok包
//    @Setter
//    private static UserMapper userMapper;
//    @Autowired
//    private void userMapper(UserMapper userMapper) {
//        setUserMapper(userMapper);
//    }

    /**
     * 导入excel
     * @param file
     */
    public static String importExcel(MultipartFile file) {
        List<User> userList = new ArrayList<>();
        try {
            // 核心操作,读取上传文件,转换为 ExcelReader 对象,然后通过ExcelReader对象转换成java类型或对象
            ExcelReader excelReader = ExcelUtil.getReader(file.getInputStream());
            // 表头字段检查
            List<Object> firstRow = excelReader.readRow(0);
            if (!"账号".equals(firstRow.get(0)) || !"姓名".equals(firstRow.get(1))) {
                return "请勿修改模板中的表头字段";
            }
            //从第二行开始获取表格内容(第一行是中文表头)
            List<List<Object>> list = excelReader.read(1);
            if (list.isEmpty()) {
                return "数据为空";
            }
            // 检查文件中是否有重复数据(例如账号不允许重复,一般是某个字段不允许重复)
            // 利用set的不重复特性
            Set<Object> accountSet = new HashSet<>();
            for (List<Object> cell : list) {
                User user = new User();
                if (cell.size() < 2 || ObjectUtils.isEmpty(cell.get(0)) || ObjectUtils.isEmpty(cell.get(1))) {
                    return "数据存在空值";
                }
                user.setAccount(cell.get(0).toString());
                user.setName(cell.get(1).toString());
                userList.add(user);
                accountSet.add(cell.get(0).toString());
            }
            if (list.size() != accountSet.size()) {
                return "文件中有重复数据";
            }
            // 检查是否与数据库中数据重复
            for (User user : userList) {
                User entity = userMapper.selectByAccount(user.getAccount());
                if (!ObjectUtils.isEmpty(entity)) {
                    return  "数据库中已存在此账号:" + user.getAccount();
                }
            }
            //保存至数据库
//            userMapper.saveBatch(userList);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return "success";
    }
}

核心代码:ExcelReader excelReader = ExcelUtil.getReader(file.getInputStream());
核心类:ExcelReader
除了这一行核心代码,下面的全部是业务上的处理,都可以删除和修改。
如果这一行核心代码记不住的话,那就记住一个ExcelReader 核心类即可。通过ExcelReader可以获取业务数据和其他表格的操作。文章来源地址https://www.toymoban.com/news/detail-517185.html

到了这里,关于hutool工具类实现excel上传 支持03和07的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包