使用java将Execl数据更新到数据库表中

本文分享了将Excel数据导入并更新至数据库表的具体实践,包括CSV格式转换、数据读取及更新策略,适合需要处理大量数据更新的开发者参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在工作中,遇见数据的导入。有的是文本文件,有的是在Excel表格里面的数据。我这次的工作就是讲Excel表中的数据更新到数据的表里面。

首先将execl格式转换成.csv并且转成utf-8格式。

废话不多说直接写代码。

@Override
    public void exlH() throws Exception {
        String filePath = "D:/FileRecv/2018082714460829253.csv";
        File file = new File(filePath);
        CsvReader reader = null;
        reader = new CsvReader(FileUtils.openInputStream(file), ',',
                Charset.forName("UTF-8"));
        List<Object[]> list = new ArrayList<Object[]>();
        while (reader.readRecord()) {
            list.add(reader.getValues());
        }
        List<BcoCustomsData> bcoCustomsDatas =  bcoCustomsDataDao.findBy("customsDataCatg", "73");
        for (int i = 2; i < list.size(); i++) {
            String[] split = (String[]) list.get(i); // 取出一组数据
            final String dataCode = split[0];
            Predicate predicate = new Predicate() {
                @Override
                public boolean evaluate(Object object) {
                    BcoCustomsData contact = (BcoCustomsData) object;
                    if(dataCode.equals(contact.getDataCode())){
                        return true;
                    }
                    return false;
                }
            };        
            List<BcoCustomsData> customsDate =  (List<BcoCustomsData>) CollectionUtils.select(bcoCustomsDatas, predicate);
            BcoCustomsData bcoCustomsData = null;
            if(customsDate != null && customsDate.size()>0){
                bcoCustomsData = customsDate.get(0);
                bcoCustomsData.setDataName(split[1]);
                bcoCustomsData.setDataEnName(split[2]);
                bcoCustomsDataDao.saveOrUpdate(bcoCustomsData);
            }else{
                bcoCustomsData = new BcoCustomsData();
                bcoCustomsData.setCdVer("TRANSGD2018");
                bcoCustomsData.setCreator("ADMIN");
                bcoCustomsData.setCustomsDataCatg("73");
                bcoCustomsData.setDataCode(split[0]);
                if(StringUtils.isNotEmpty(bcoCustomsData.getDataCode())){
                    bcoCustomsData.setDataName(split[1]);
                    bcoCustomsData.setDataEnName(split[2]);
                    bcoCustomsDataDao.save(bcoCustomsData);
                }
            }
        }
    
    }

以上代码就可以将数据更新到表中去。

 

文章撰写不专业,见谅,有什么错误,欢迎大家私信,谢谢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值