使用EasyExcel对excel数据进行相似度判断

这篇具有很好参考价值的文章主要介绍了使用EasyExcel对excel数据进行相似度判断。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


@Data
public class ExeclDto {
    /**
     * execl表
     */
    private String filename;
    /**
     * 需要匹配的工作表名
     */
    private String name1;
    /**
     * 需要匹配的工作表名
     */
    private String name2;
}

 文章来源地址https://www.toymoban.com/news/detail-492376.html

@SpringBootTest
@Slf4j
class CmmcysApplicationTests {

    @Test
    public void testReadExcel() throws IOException, InvalidFormatException {
        // 读取的excel文件路径
        String filename = "src/main/resources/static/xlsx/车型名称映射.xlsx";
        String filename_new = "src/main/resources/static/xlsx/结果表.xlsx";
        // 判断filename是否为空
        if (!StringUtils.isEmpty(filename)) {
            //读取excel
            ExeclDto execlDto = new ExeclDto();
            execlDto.setFilename(filename);
            execlDto.setName1("A");
            execlDto.setName2("B");
            Map<String, String> map = readExcel(execlDto);
            //如果map非空就写入
            if (!map.isEmpty()) {
                List list = new ArrayList<>();
                for (Map.Entry<String, String> entry : map.entrySet()) {
                    CarDto carDto = new CarDto();
                    carDto.setName_a(entry.getKey());
                    carDto.setName_b(entry.getValue());
                    list.add(carDto);
                    log.info(entry.getKey() + " ;" + entry.getValue());
                }
                EasyExcel.write(filename_new, CarDto.class).sheet("结果表").doWrite(list);
            }else {
                System.out.println("文件没有该工作表,请重新检查上传");
            }
        } else {
            System.out.println("文件为空,请重新上传");
        }
    }


    public Map<String,String> readExcel(ExeclDto execlDto){
        // 读取的excel文件路径
        String filename = execlDto.getFilename();
        // 读取excel
        File file = new File(filename);
        Workbook sheets = null;
        try {
            sheets = WorkbookFactory.create(file);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (InvalidFormatException e) {
            e.printStackTrace();
        }
        Sheet sheetAt1 = sheets.getSheet(execlDto.getName1());
        Sheet sheetAt2 = sheets.getSheet(execlDto.getName2());
        //判断excel表中是否有该工作表
        if (sheetAt1 !=null && sheetAt2 !=null) {
            //采用LinkedHashMap保证数据的顺序性
            Map<String, Double> map1 = new LinkedHashMap<>();
            Map<String, String> map2 = new LinkedHashMap<>();
            //循环工作表行
            for (Row row1 : sheetAt1) {
                //获取工作表列值
                String stringCellValue = row1.getCell(0).getStringCellValue();
                //设置string类型初始阈值
                map1.put("bz", 0.0);
                //循环需要比较的工作表列值
                for (Row row2 : sheetAt2) {
                    //获取工作表列值
                    String stringCellValue1 = row2.getCell(0).getStringCellValue();
                    //判断车辆款式,获取字符串位置
                    if (stringCellValue.contains("款") && stringCellValue1.contains("款")) {
                        int i = stringCellValue.indexOf("款");
                        int b = stringCellValue1.indexOf("款");
                        //进行款式截取并比较款式是否一致
                        if (stringCellValue.substring(i - 4, i).equals(stringCellValue1.substring(b - 4, b))) {
                            //采用String里面的方法进行相似度取值
                            double similarity = StringUtils.getJaroWinklerDistance(stringCellValue, stringCellValue1);
                            //进行相似度比较
                            if (similarity > map1.get("bz")) {
                                //相似度高的替换低的
                                map1.put("bz", similarity);
                                //存放进map集合
                                map2.put(stringCellValue, stringCellValue1);
                            }
                        }
                    }
                }
            }
            return map2;
        }else {
            return null;
        }
    }
}

使用EasyExcel对excel数据进行相似度判断

使用EasyExcel对excel数据进行相似度判断

 

使用EasyExcel对excel数据进行相似度判断

 

到了这里,关于使用EasyExcel对excel数据进行相似度判断的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 【二十四】springboot使用EasyExcel和线程池实现多线程导入Excel数据

      springboot篇章整体栏目:  【一】springboot整合swagger(超详细 【二】springboot整合swagger(自定义)(超详细) 【三】springboot整合token(超详细) 【四】springboot整合mybatis-plus(超详细)(上) 【五】springboot整合mybatis-plus(超详细)(下) 【六】springboot整合自定义全局异常

    2023年04月08日
    浏览(65)
  • 使用EasyExcel实现excel导出,支持百万大数据量导出-----超简单

    通过设置sheet数量,完成分批导出,每个sheet存100万数据,每次查询插入20万数据,避免超时,内存溢出等问题,可以根据服务器配置调整参数设置。 1.引入依赖 2.创建对应的实体类 @ExcelProperty设置的就是导出的列名,还可以设置排序等等 3.核心导出代码 4.配置类 至此就完成导

    2024年02月11日
    浏览(60)
  • 使用Apache POI数据导出及EasyExcel进行十万、百万的数据导出

    Apache POI 是基于 Office Open XML 标准( OOXML )和 Microsoft 的 OLE 2 复合⽂档 格式( OLE2 )处理各种⽂件格式的开源项⽬。 简⽽⾔之,您可以使⽤ Java 读写 MS Excel ⽂件,可以使⽤ Java 读写 MS Word 和 MS PowerPoint ⽂件。 1.HSSF - 提供读写 Microsoft Excel XLS 格式 (Microsoft Excel 97 (-2003)) 档案

    2024年02月15日
    浏览(41)
  • 使用EasyExcel读写Excel文件

    笔者之前一直使用POI读写Excel文件,最近有个需求需要读取大概80万行数据的Excel,使用POI读取到10.2万行左右就卡死不动了,而且CPU占用直接拉满到100%,内存占用也很高。 查找资料后,发现POI提供了读取大量数据的方法,但是用起来比较复杂。同时看到有人提到用EasyExcel读取

    2024年02月13日
    浏览(50)
  • 30 使用easyExcel依赖生成Excel

            在类上加注解,@ExcelProperty,注解中value属性是列名,index属性是第几列。         首先,需要创建一个泛型为Student的集合,存放多个Student对象,一个对象相当于excel表格的其中一行。然后,调用EasyExcel的write方法,需要填写excel生成的路径(需要写到生成的excel文件

    2024年02月14日
    浏览(34)
  • 使用EasyExcel实现Excel的导入导出

    在真实的开发者场景中,经常会使用excel作为数据的载体,进行数据导入和导出的操作,使用excel的导入和导出有很多种解决方案,本篇记录一下EasyExcel的使用。 EasyExcel是一个开源的项目,是阿里开发的。EasyExcel可以简化Excel表格的导入和导出操作,使用起来简单快捷,易上手

    2023年04月15日
    浏览(47)
  • Java 使用 easyexcel 读取 excel 文件

    easyexcel 官网:EasyExcel官方文档 - 基于Java的Excel处理工具 | Easy Excel 1. 引入依赖并给出示例 excel     2. 两种读取的方式         (1)确定表头:建立对象,和表头形成映射。(这里以此为例)         (2)不确定表头:每一行映射为 MapString, Object。 3. 先创建 excel 中表头对应

    2024年02月12日
    浏览(54)
  • EasyExcel导出带下拉选数据的Excel数据导入模板

    #因为项目中需要导入一些信息,但是这些信息比较不常见,且在项目字典数据中维护有这些数据,所以在导出模板的时候,把这些数据一并导出,可以减少用户的编写,避免在导入的时候因为数据错误,发生一些业务问题 直接开始 1、以岗位类型为例,展示数据的实现方式

    2024年02月03日
    浏览(46)
  • 使用EasyExcel实现Excel表格的导入导出

    Java解析、生成Excel比较有名的框架有Apache poi、jxl。但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度的解决一些内存溢出的问题,但POI还是有一些缺陷,比如07版Excel解压缩以及解压后存储都是在内存中完成的,内存消耗依然很大。 easyexcel重

    2024年02月12日
    浏览(44)
  • Java——使用EasyExcel导出动态列的Excel

    多多点赞,会变好看! 多多留言,会变有钱! 有些时候列表的列可能是动态的,需要根据动态表头导出Excel文件,这时候可以使用下面的方法解决: 静态列导出代码:

    2024年02月15日
    浏览(46)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包