美文网首页
fastexcel工具

fastexcel工具

作者: jey恒 | 来源:发表于2018-01-14 17:08 被阅读330次

excel导入到处

  • 很多项目中有读excel的处理,原来有些也没有提出来,这个事情没人做,just so
  • 开源的有不少,代码写的并不好,功能不全面
  • 花了两个小时写了fastexcel工具包

功能建议

excel读取到list中

  • list中map,可以直接序列号成json,入库;类似补充信息,前端直接渲染json格式展示,非结构数据
  • list中为java对象,需要添加注解
public class ExcelHelper {

    /**
     * 读取流 输出map类型[看用于excel转换直接入库json数据]
     * 
     * @param in
     * @return
     */
    public static List<Map<String, String>> read(InputStream in) {

        return ReadUtils.read(in);
    }

    /**
     * 读取流 输出类
     * 
     * @param in
     * @param tClass
     * @param <T>
     * @return
     */
    public static <T> List<T> read(InputStream in, Class<T> tClass) {

        return ReadUtils.read(in, tClass);
    }

  • 小细节很多: 反射加缓存,值的判断,注释功能可多可少慢慢优化
  • 反射setvalue
private static Object getValueByCell(TypeToken typeToken, Cell cell, FieldInfo fieldInfo) throws ParseException {

        // 转包装类型
        Class typeClass
            = typeToken.isPrimitive() ? ClassUtils.primitiveToWrapper(typeToken.getRawType()) : typeToken.getRawType();

        if (typeClass.isAssignableFrom(String.class)) {
            return StringUtils.trimToEmpty(cell.getStringCellValue());
        }

        // 日期
        if (typeClass.isAssignableFrom(Date.class)) {
            // 日期格式
            if (Cell.CELL_TYPE_NUMERIC == cell.getCellType()) {
                return cell.getDateCellValue();
            }
            cell.setCellType(Cell.CELL_TYPE_STRING);
            return DateUtils.parseDate(cell.getStringCellValue(), fieldInfo.getFormat());
        }

        if (typeClass.isAssignableFrom(Boolean.class)) {
            if (Cell.CELL_TYPE_BOOLEAN == cell.getCellType()) {
                return cell.getBooleanCellValue();
            }
            return cell.getStringCellValue().equalsIgnoreCase("true") || (!cell.getStringCellValue().equals("0"));
        }

        if (typeClass.isAssignableFrom(Integer.class)) {

            if (Cell.CELL_TYPE_NUMERIC == cell.getCellType()) {
                return Double.valueOf(cell.getNumericCellValue()).intValue();
            }
            return Integer.valueOf(cell.getStringCellValue());
        }

        if (typeClass.isAssignableFrom(Long.class)) {

            if (Cell.CELL_TYPE_NUMERIC == cell.getCellType()) {
                return Double.valueOf(cell.getNumericCellValue()).longValue();
            }
            return Long.valueOf(cell.getStringCellValue());
        }

        if (typeClass.isAssignableFrom(Double.class)) {

            if (Cell.CELL_TYPE_NUMERIC == cell.getCellType()) {
                return cell.getNumericCellValue();
            }
            return Double.valueOf(cell.getStringCellValue());
        }

        if (typeClass.isAssignableFrom(BigDecimal.class)) {

            if (Cell.CELL_TYPE_NUMERIC == cell.getCellType()) {
                return new BigDecimal(cell.getNumericCellValue());
            }
            return new BigDecimal(cell.getStringCellValue());
        }

        cell.setCellType(Cell.CELL_TYPE_STRING);
        String cellValue = cell.getStringCellValue();
        return StringUtils.trimToEmpty(cellValue);

    }
  • 对象可能是基础类型和包装的,处理下

后期功能,导出到文件,导出到浏览器直接下载等

性能测试

相关文章

  • fastexcel工具

    excel导入到处 很多项目中有读excel的处理,原来有些也没有提出来,这个事情没人做,just so 开源的有...

  • Laravel 教程:使用Fast Excel解决导出超大 XL

    TL;DR: 本文介绍 Laravel 的 FastExcel 组件,文中会对 PHP generators 速览...

  • Java导入导出Excel

    读写Excel三种常用的技术: POI JXL FASTEXCEL 概念: 工作簿:相当于Excel文件 工作表S...

  • 工具工具还是工具

    最近几天参加了一个数据分析的训练营,每天晚上8点钟开始,一直讲到10点多,老师很卖力,干货也很多。今天结营,就在这...

  • 2019-01-08 ps总结

    ps 抠图工具 套索工具 多边套索工具 文字工具 磁性套索工具 魔棒工具 渐变工具 蒙版 图章工具 alt 吸取颜...

  • 【工具箱-2-选区工具】

    【工具箱-2-选区工具】 【矩形选框工具组:】矩形选框工具、椭圆选框工具、单行选框工具、单列选框工具。 个人理解:...

  • AI 2019 Mac版常用快捷键大全

    移动工具:V 选取工具:A 钢笔工具:P 添加锚点工具:+ 删除锚点工具:- 文字工具:T 多边形工具:L 矩形、...

  • PS扣图

    1扣图工具 套索工具 多边套索工具 磁性套索工具 快速选择工具 魔棒工具 橡皮擦工具 背景橡皮擦工具 魔术橡皮擦工...

  • AI热键

    选择工具:v 直接选择工具:a 魔棒工具:y 套索工具:q 钢笔工具:p 转换描点工具:Ctrl+c 文字工具:t...

  • 工具?工具人?

    很多时候,我们发明工具的目的是方便工作,结果,适得其反,不仅没有方便,反而增添了工作量。原来往上级交个什么东西,都...

网友评论

      本文标题:fastexcel工具

      本文链接:https://www.haomeiwen.com/subject/uxakoxtx.html