Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Java工具集-Excel行转换为对象工具类

Java工具集-Excel行转换为对象工具类

作者头像
cwl_java
发布于 2020-06-10 07:48:57
发布于 2020-06-10 07:48:57
1K00
代码可运行
举报
文章被收录于专栏:cwl_Javacwl_Java
运行总次数:0
代码可运行
代码示例
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package com.simple.util.poi;

import com.simple.util.time.DateUtil;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;

import java.io.Serializable;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @program: simple_tools
 * @description: Excel行转换为对象工具类
 * @author: Mr.chen
 * @create: 2020-06-09 09:50
 **/
public class ExcelRowConvert2ObjectUtil {
    /**
     * 检查表头
     *
     * @param headRow
     */
    private Map<String, Integer> checkTableHead(Map<String, String> headMap, List<String> headRow) {
        if (CollectionUtils.isEmpty(headRow)) {
            throw new RuntimeException("import data is empty");
        }
        Map<String, Integer> indexMap = new HashMap<String, Integer>();
        int repeat = 0;
        int index = 0;
        boolean flag = false;
        for (String columnName : headRow) {
            repeat = 0;
            for (Map.Entry<String, String> mp : headMap.entrySet()) {
                if (mp.getKey().equals(StringUtils.trim(columnName))) {
                    ++repeat;
                    flag = true;
                }
            }
            if (repeat > 1) {
                throw new RuntimeException("import data is empty");
            }
            if (!flag) {
                throw new RuntimeException("import data is empty");
            }
            indexMap.put(columnName, index);
            ++index;
        }
        return indexMap;
    }

    /**
     * 处理数据
     * @param cls
     * @param headMap
     * @param sheets
     * @param <T>
     * @return
     */
    @SuppressWarnings("unchecked")
    public <T> List<T> toList(Class<?> cls, Map<String, String> headMap, List<DataGird> sheets) {
        if (cls == null) {
            throw new RuntimeException("object is not exsit");
        }
        if (headMap == null || headMap.size() <= 0) {
            throw new RuntimeException("import data is empty");
        }
        // 第一个样单
        DataGird excel = sheets.get(0);
        List<List<String>> rows = excel.getData();
        if (CollectionUtils.isEmpty(rows) && rows.size() <= 1) {
            throw new RuntimeException("操作失败 导入数据为空");
        }
        // 标题行
        List<String> headRow = rows.get(0);
        Map<String, Integer> map = this.checkTableHead(headMap, headRow);
        List<T> objs = new ArrayList<T>();
        T instance = null;
        try {
            Field[] fields = cls.getDeclaredFields();
            List<String> datas = null;
            for (int i = 1, length = rows.size(); i < length; i++) {
                datas = rows.get(i);
                instance = (T) cls.newInstance();
                for (String headName : headRow) {
                    for (Map.Entry<String, Integer> mp : map.entrySet()) {
                        if (mp.getKey().equals(headName)) {
                            String column = headMap.get(headName);
                            int index = mp.getValue().intValue();
                            if (datas.size() > index) {
                                String value = datas.get(index);
                                for (Field field : fields) {
                                    if (field.getName().equals(column)) {
                                        field.setAccessible(true);
                                        String fldtype = field.getType().getSimpleName();
                                        if ("String".equals(fldtype)) {
                                            field.set(instance, value);
                                        } else if ("Double".equals(fldtype)) {
                                            double val = Double.valueOf(StringUtils.isNotBlank(value) ? Double.parseDouble(value) : 0);
                                            field.set(instance, val);
                                        } else if ("Float".equals(fldtype)) {
                                            float val = Float.valueOf(StringUtils.isNotBlank(value) ? Float.parseFloat(value) : 0);
                                            field.set(instance, val);
                                        } else if ("Integer".equals(fldtype)) {
                                            int val = Integer.valueOf(StringUtils.isNotBlank(value) ? Integer.parseInt(value) : 0);
                                            field.set(instance, val);
                                        } else if ("Date".equals(fldtype)) {
                                            Date val = DateUtil.parseDate(value, new String[]{"yyyy-MM-dd"});
                                            field.set(instance, val);
                                        } else if ("Long".equals(fldtype)) {
                                            long val = Long.valueOf(StringUtils.isNotBlank(value) ? Long.parseLong(value) : 0);
                                            field.set(instance, val);
                                        }

                                    }
                                }
                            }
                        }
                    }
                }
                objs.add(instance);
            }
        } catch (Exception e) {
            throw new RuntimeException("操作失败");
        }

        return objs;
    }
}

class DataGird implements Serializable {
    /**
     *
     */
    private static final long serialVersionUID = 1L;
    private String title; // 标题
    private List<List<String>> data; // 数据
    private int columns; // 列数

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public List<List<String>> getData() {
        return data;
    }

    public void setData(List<List<String>> data) {
        this.data = data;
    }

    public int getColumns() {
        return columns;
    }

    public void setColumns(int columns) {
        this.columns = columns;
    }

}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/06/09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【视频】广义相加模型(GAM)在电力负荷预测中的应用|附代码数据
最近我们被客户要求撰写关于广义相加模型(GAM)的研究报告,包括一些图形和统计输出。
拓端
2023/03/24
1.3K0
【视频】什么是非线性模型与R语言多项式回归、局部平滑样条、 广义相加GAM分析工资数据|数据分享|附代码数据
在这文中,我将介绍非线性回归的基础知识。非线性回归是一种对因变量和一组自变量之间的非线性关系进行建模的方法。最后我们用R语言非线性模型预测个人工资数据是否每年收入超过25万
拓端
2023/01/29
1.3K0
【视频】广义相加模型(GAM)在电力负荷预测中的应用
原文链接:http://tecdat.cn/?p=9024 http://mpvideo.qpic.cn/0b78byaawaaazealqhylxrqvadwdbmhaacya.f10002.mp4
拓端
2022/03/11
1.8K0
【视频】广义相加模型(GAM)在电力负荷预测中的应用
R语言用标准最小二乘OLS,广义相加模型GAM ,样条函数进行逻辑回归LOGISTIC分类
这里唯一的问题是权重Δold是未知β的函数。但是实际上,如果我们继续迭代,我们应该能够解决它:给定β,我们得到了权重,并且有了权重,我们可以使用加权的OLS来获取更新的β。这就是迭代最小二乘的想法。
拓端
2021/03/16
1.5K0
【视频】什么是非线性模型与R语言多项式回归、局部平滑样条、 广义相加GAM分析工资数据|数据分享|附代码数据
在这文中,我将介绍非线性回归的基础知识。非线性回归是一种对因变量和一组自变量之间的非线性关系进行建模的方法。最后我们用R语言非线性模型预测个人工资数据(查看文末了解数据获取方式)是否每年收入超过25万
拓端
2022/12/08
8020
Python用KShape对时间序列进行聚类和肘方法确定最优聚类数k可视化|附代码数据
最近我们被客户要求撰写关于时间序列进行聚类研究报告,包括一些图形和统计输出。 时序数据的聚类方法,该算法按照以下流程执行。
拓端
2022/12/12
1.1K0
【视频】什么是非线性模型与R语言多项式回归、局部平滑样条、 广义相加GAM分析工资数据|数据分享|附代码数据
在这文中,我将介绍非线性回归的基础知识。非线性回归是一种对因变量和一组自变量之间的非线性关系进行建模的方法。最后我们用R语言非线性模型预测个人工资数据是否每年收入超过25万
拓端
2023/05/08
4990
在r语言中使用GAM(广义相加模型)进行电力负荷时间序列分析|附代码数据
我已经准备了一个文件,其中包含四个用电时间序列来进行分析。数据操作将由data.table程序包完成。
拓端
2023/11/23
2680
实现广义相加模型GAM和普通最小二乘(OLS)回归
这篇文章探讨了为什么使用广义相加模型 是一个不错的选择。为此,我们首先需要看一下线性回归,看看为什么在某些情况下它可能不是最佳选择。
拓端
2022/01/13
1.4K0
实现广义相加模型GAM和普通最小二乘(OLS)回归
R语言机器学习实战之多项式回归|附代码数据
一个简单的方法就是将每一个特征的幂次方添加为一个新的特征,然后在这个拓展的特征集上进行线性拟合,这种方法成为多项式回归。
拓端
2023/02/24
1.4K0
【视频】R语言广义加性模型GAMs非线性效应、比较分析草种耐寒性实验数据可视化
广义加法模型(Generalized Additive Models, GAMs)作为一种高度灵活的统计工具,显著扩展了广义线性模型(Generalized Linear Models, GLMs)的框架。GAMs的核心思想在于,将GLM中的一个或多个线性预测变量替换为这些变量的平滑函数,从而允许模型捕捉预测变量与条件响应之间复杂且非线性的关系,而无需事先对这些关系的具体形态做出假设。这一过程通过引入惩罚平滑样条技术实现,该方法在保持模型灵活性的同时,有效防止了过拟合现象。
拓端
2024/07/12
2970
【视频】R语言广义加性模型GAMs非线性效应、比较分析草种耐寒性实验数据可视化
R语言使用虚拟变量(Dummy Variables) 回归分析工资影响因素|附代码数据
虽然这些参数在统计学上是有意义的,但这并没有任何意义。与高中相比,大学学历怎么可能使你的工资减少5105?
拓端
2023/02/09
8710
R语言广义线性模型(GLM)广义相加模型(GAM):多元平滑回归分析保险投资风险敞口
我不能在广义线性模型中使用双变量样条,但是考虑到广义可加模型(现在绝对不是可加模型),它确实可以工作。更准确地说,投资组合的分布是这两个协变量的函数,如下所示
拓端
2020/08/05
2.4K0
【视频】R语言逻辑回归(Logistic回归)模型分类预测病人冠心病风险|数据分享
最近我们被客户要求撰写关于逻辑回归的研究报告,包括一些图形和统计输出。 本文介绍了逻辑回归并在R语言中用逻辑回归(Logistic回归)模型分类预测病人冠心病风险数据
拓端
2022/12/12
1.5K0
R语言广义相加(加性)模型(GAMs)与光滑函数可视化
在本文中,我们在研究工作中使用广义加性模型(GAMs)。mgcv软件包是一套优秀的软件,可以为非常大的数据集指定、拟合和可视化GAMs(点击文末“阅读原文”获取完整代码数据)。
拓端
2023/08/31
1.1K0
R语言广义相加(加性)模型(GAMs)与光滑函数可视化
R语言淮河流域水库水质数据相关性分析、地理可视化、广义相加模型GAM调查报告|附代码数据
采样地点:淮河流域一带,昭平台水库、白龟山水库、燕山水库、石漫滩水库、板桥水库、宿鸭湖水库、博山水库、南湾水库、石山口水库、五岳水库、泼河水库、鲶鱼山水库 。
拓端
2023/02/24
6790
数据分享|逻辑回归、随机森林、SVM支持向量机预测心脏病风险数据和模型诊断可视化|附代码数据
世界卫生组织估计全世界每年有 1200 万人死于心脏病。在美国和其他发达国家,一半的死亡是由于心血管疾病
拓端
2023/02/09
1.1K0
数据分享|逻辑回归、随机森林、SVM支持向量机预测心脏病风险数据和模型诊断可视化|附代码数据
世界卫生组织估计全世界每年有 1200 万人死于心脏病。在美国和其他发达国家,一半的死亡是由于心血管疾病
拓端
2023/01/11
1.2K0
R语言里的非线性模型:多项式回归、局部样条、平滑样条、广义加性模型分析
在这里,我们放宽了流行的线性技术的线性假设。有时线性假设只是一个很差的近似值。有许多方法可以解决此问题,其中一些方法可以通过使用正则化方法降低模型复杂性来  解决  。但是,这些技术仍然使用线性模型,到目前为止只能进行改进。本文本专注于线性模型的扩展…
拓端
2020/08/21
4.6K0
在r语言中使用GAM(广义相加模型)进行电力负荷时间序列分析
我已经准备了一个文件,其中包含四个用电时间序列以进行分析。数据操作将由data.table程序包完成。
拓端
2020/09/25
1.6K0
推荐阅读
【视频】广义相加模型(GAM)在电力负荷预测中的应用|附代码数据
1.3K0
【视频】什么是非线性模型与R语言多项式回归、局部平滑样条、 广义相加GAM分析工资数据|数据分享|附代码数据
1.3K0
【视频】广义相加模型(GAM)在电力负荷预测中的应用
1.8K0
R语言用标准最小二乘OLS,广义相加模型GAM ,样条函数进行逻辑回归LOGISTIC分类
1.5K0
【视频】什么是非线性模型与R语言多项式回归、局部平滑样条、 广义相加GAM分析工资数据|数据分享|附代码数据
8020
Python用KShape对时间序列进行聚类和肘方法确定最优聚类数k可视化|附代码数据
1.1K0
【视频】什么是非线性模型与R语言多项式回归、局部平滑样条、 广义相加GAM分析工资数据|数据分享|附代码数据
4990
在r语言中使用GAM(广义相加模型)进行电力负荷时间序列分析|附代码数据
2680
实现广义相加模型GAM和普通最小二乘(OLS)回归
1.4K0
R语言机器学习实战之多项式回归|附代码数据
1.4K0
【视频】R语言广义加性模型GAMs非线性效应、比较分析草种耐寒性实验数据可视化
2970
R语言使用虚拟变量(Dummy Variables) 回归分析工资影响因素|附代码数据
8710
R语言广义线性模型(GLM)广义相加模型(GAM):多元平滑回归分析保险投资风险敞口
2.4K0
【视频】R语言逻辑回归(Logistic回归)模型分类预测病人冠心病风险|数据分享
1.5K0
R语言广义相加(加性)模型(GAMs)与光滑函数可视化
1.1K0
R语言淮河流域水库水质数据相关性分析、地理可视化、广义相加模型GAM调查报告|附代码数据
6790
数据分享|逻辑回归、随机森林、SVM支持向量机预测心脏病风险数据和模型诊断可视化|附代码数据
1.1K0
数据分享|逻辑回归、随机森林、SVM支持向量机预测心脏病风险数据和模型诊断可视化|附代码数据
1.2K0
R语言里的非线性模型:多项式回归、局部样条、平滑样条、广义加性模型分析
4.6K0
在r语言中使用GAM(广义相加模型)进行电力负荷时间序列分析
1.6K0
相关推荐
【视频】广义相加模型(GAM)在电力负荷预测中的应用|附代码数据
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验