读取excel表中的数据(使用Workbook方法)

首先接受前台传过来的FileInputStream属性的文件,

Workbook readwb = Workbook.getWorkbook(fileBuffer);

接着获取第一张表的信息:Sheet readsheet = readwb.getSheet(0);

用一个int变量将表中的总行数给接受:int rsRows = readsheet.getRows();

Range[] rangeCell = readsheet.getMergedCells();// 获取合并单元格        ×       不需要不写即可

接着循环这个表中的总行数,判断内容是否为空,不为空就将内容存进对象中        int i =2 是根据表格第几行开始有数据

getCell(1,i)是获取表格的第一列第几行   getContents()是获取表格具体的内容的   trim()是去除两端多余的空格的:

    for (int i = 2; i < rsRows; i++) // 获取指定单元格的对象引用
        {
            CoreTargetCustomer coreTargetCustomer = new CoreTargetCustomer();
            if (!"".equals(readsheet.getCell(1, i).getContents().toString().trim()))
                coreTargetCustomer.setOrganFullName(readsheet.getCell(1, i).getContents().toString());// 读取单元格数据
            if (!"".equals(readsheet.getCell(2, i).getContents().toString().trim()))
                coreTargetCustomer.setCompanyName(readsheet.getCell(2, i).getContents().toString());
            if (!"".equals(readsheet.getCell(3, i).getContents().toString().trim()))
                coreTargetCustomer.setMaintainPeople(readsheet.getCell(3, i).getContents().toString());
            if (!FormatUtil.allFieldIsNULL(coreTargetCustomer)) {// 判断读取到的元素是否都为空
                coreTargetCustomer.setCreateTime(timestamp);//设置时间的格式的      ×       不需要不写即可
                coreTargetCustomer.setYear(year);// 前台传入自定义导入时间ID            ×
                coreTargetCustomer.setMonth(month);// 前台传入自定义导入时间ID       ×
                coreTargetCustomer.setIsDelete(false);               //改变数据库中的状态    ×
                ecros.add(coreTargetCustomer);                  ecros是自己定义的一个list集合
            } else {
                break;// 遇到空行,跳出读表;
            }
        }

readwb.close();       //关闭资源

// 日期格式进行转换           

DateCell dc;
            Date date;

if (!"".equals(readsheet.getCell(4, i).getContents().toString().trim()))
                {
                    dc = (DateCell) readsheet.getCell(4, i);
                    date = dc.getDate();
                    String str = SF_date.format(date);// 日期部分
                    String str2 = SF_time.format(date);// 时间部分
                    String dateStr = str + " " + str2;
                    depositDetail.setCloseTime(Timestamp.valueOf(dateStr));
                }

//人民币格式进行转换                 在表格中的显示是40,101,504.22       replace()将,表换为空格

if (!"".equals(readsheet.getCell(7, i).getContents().toString().trim()))// 人民币余额须格式转换
                    depositDetail.setCnyBalance(
                            new BigDecimal(readsheet.getCell(7, i).getContents().toString().replace(",", ""))
                                    .setScale(2, BigDecimal.ROUND_DOWN));

//判断一个对象里面的元素是否都为null

    public static boolean allFieldIsNULL(Object obj) {
        Boolean flag = true;//都为空
        if (null == obj || "".equals(obj)) return flag;
        try {
            for (Field field : obj.getClass().getDeclaredFields()) { //TODO 循环该类,取出类中的每个属性
                field.setAccessible(true);//TODO 把该类中的所有属性设置成 public
                Object object = field.get(obj); //TODO object 是对象中的属性
                if (object instanceof CharSequence) { //TODO 判断对象中的属性的类型,是否都是CharSequence的子类
                    if (!ObjectIsNullUtil.isNull(object)) { //TODO 如果是他的子类,那么就可以用ObjectUtils.isEmpty进行比较
                        flag = false;//不为空
                    }
                } else { //TODO 如果不是那就直接用null判断
                    if (!(null == object || "".equals(object))) {
                        flag = false;//不为空
                    }
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return flag;//false:不都为空
    }

猜你喜欢

转载自blog.csdn.net/weixin_42546892/article/details/83892794
今日推荐