首页 > 其他分享 >POI实现,两个Excel里重复字段去重,之后写到另一个Excel(代码库)

POI实现,两个Excel里重复字段去重,之后写到另一个Excel(代码库)

时间:2023-10-23 15:24:15浏览次数:30  
标签:List POI Excel new 字段 book org import

import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.*;
import org.jetbrains.annotations.NotNull;

import java.io.*;
import java.util.*;

/**
 * @author jiash
 * @since 2023/4/18
 */
public class StringQuChongForTwoExcelTest {
    private static final Map<String, YhtCountry> countryMap = new HashMap<>();


    public static void main(String[] args) throws Exception {
        String file1 = "E:\\_user_id_varchar_927-1_.xlsx";
        String file2 = "E:\\_user_id_varchar_927-2_.xlsx";

        List<String> list1 = getListFromExcel(file1);
        List<String> list2 = getListFromExcel(file2);
        System.out.println(list1.size());
        Collection union = CollectionUtils.union(list1, list2);
        List<String> ans = new ArrayList<>(union);

        try (InputStream is = new FileInputStream("E:\\cccc.xlsx");
             Workbook book = WorkbookFactory.create(is);
             OutputStream os = new FileOutputStream("E:\\cccc.xlsx");) {
            Sheet sheet = book.getSheetAt(0);

            for (int i = 0; i < ans.size(); i++) {
                Row row = sheet.createRow(i + 1);
                Cell cell = row.createCell(0);
                if (cell != null) {
                    cell.setCellValue(ans.get((i)));
                }
            }
            book.write(os);
        } catch (IOException e) {
            //return;
        } catch (InvalidFormatException e) {
            e.printStackTrace();
        }
    }

    @NotNull
    private static List<String> getListFromExcel(String file1) {
        List<String> list1 = new ArrayList<>(3000000);
        try (InputStream is = new FileInputStream(file1);) {
            Workbook book = WorkbookFactory.create(is);
            Sheet sheet = book.getSheetAt(0);
            for (int i = 1; i <= sheet.getLastRowNum(); i++) {
                Row row = sheet.getRow(i);
                if (row == null) {
                    continue;
                }
                Cell cell = row.getCell(0);
                if (cell != null) {
                    String userId = cell.getStringCellValue();
                    if (StringUtils.isEmpty(userId)) {
                        continue;
                    }
                    list1.add(userId);
                }
            }
        } catch (IOException e) {
            //return;
        } catch (InvalidFormatException e) {
            e.printStackTrace();
        }
        return list1;
    }

}

 

标签:List,POI,Excel,new,字段,book,org,import
From: https://www.cnblogs.com/acm-bingzi/p/excel_quchong.html

相关文章

  • 《安富莱嵌入式周报》第321期:开源12导联便携心电仪,PCB AI设计,150M示波器差分探头,谷歌
     视频版:https://www.bilibili.com/video/BV1ju4y1D7A8/1、开源12导联便携心电仪https://voltagedivide.com/2017/10/14/psoc-design-and-implementation-of-a-12-lead-portable-ecg/这个开源有完整的上位机,下位机和原理图,并且有一个详细的设计论文。12导联心电图是心电图检查中常......
  • 太省劲了!【原创工具】Excel批量生成短视频,短视频创作者的福音!
     优爱酷原创文章:《玩转短视频下载》实战连载《玩转短视频下载》实战连载№1:通用手机缓存法,看得到视频即可获得到。附工具app安装包apk下载。优爱酷原创图文视频教程《玩转短视频下载》实战连载№2:通用手机抓包法,有网络即可获得到,不止视频。附工具app安装包apk下载。优爱......
  • SQL AUTO INCREMENT 字段
    参考链接:1.https://www.runoob.com/sql/sql-autoincrement.html2.3.4.https://dba.stackexchange.com/questions/61603/how-to-query-and-increase-a-value-counter-in-a-thread-safe-way-avoid-race-co橘子Jane......
  • 通过pandas读取excel数据,很多数据开头带有'特殊字符,如何处理?
    大家好,我是皮皮。一、前言前几天在Python最强王者群【wen】问了一个Pandas数据处理的问题,一起来看看吧。请教问题:通过pandas读取excle数据,很多数据开头带有'特殊字符,我用replace或者strip()函数处理均无法处理。......
  • P3565 [POI2014] HOT-Hotels
    三倍经验:bzoj#3522P3565loj#2431加强版:bzoj#4543先看bzoj#3522这题。容易想到时间\(O(n^2)\),空间\(O(n^2)\)的树形dp。设\(dp_{1/2/3,u,i}\)表示以\(u\)为根的子树中所有以\(u\)为一端点,长度为\(i\)的路径中选\(1/2/3\)条路径的方案数(......
  • 前端接口请求HTTP设置自定义header属性字段大小写问题
    问题:接口请求头传token值的字段为tokenValue,需要用到token的接口一直不能成功请求。后端排查发现没有接收到token,前端虽然传了token值,但是发现浏览器把tokenValue变成了Tokenvalue,导致后端没正确接收到token值。原因是:HTTPRFC里规定,大小写不敏感。HTTP/1.x大小写不敏感,但现实是......
  • Excel 生成 MS SQL 插入脚本
    背景:有1份Excel表内有一字段是中英文混合(前部分中文+后部分英文),现需要拆分中文和英文,并按记录条数插入到数据库中。关键功能点:1、一个字符串拆分为中文和英文。2、去除字符串前后空格。3、去除换行符。4、生成MSSQLINSERT脚本。Excel的每行数据对应一条插入脚本。方案一:1、......
  • 轻松合并Excel工作表:Java批量操作优化技巧
    摘要:本文由葡萄城技术团队于博客园原创并首发。转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。前言在Excel中设计表单时,我们经常需要对收集的信息进行统计分析。例如,学校给老师统计课时,医院给医护人员统计班次等。传统的手工方式需要......
  • 在Excel中,“趋势线”的相关解释与选择
    Excel“趋势线”解释与选择,其中有“指数趋势线”、“线性趋势线”、“对数趋势线”、“多项式趋势线”、“幂趋势线”、“移动平均趋势线”几项可选,这几项趋势分别代表什么含义如下:曲线图中趋势线主要是调节曲线的平滑度,高度,弯曲度等等。“指数”、“线性”、“对数”、“多项......
  • 查询查询Oracle数据表中字段的所属表(oracle字段所在表)
    在使用Oracle数据库时,我们经常需要在Oracle中查询某个字段的所属表名。本文将会介绍如何通过两种不同的方法来查询Oracle数据表中字段的所属表。使用Oracle自带的dba_tab_cols视图查询Oracle自带有dba_tab_cols视图,我们可以通过该视图查询Oracle数据库某个字段的所属表。例如,......