判断文件类型是否是Excel文件

2020-01-08  本文已影响0人  半日孤独
魔数

很多类型的文件,其起始的几个字节的内容是固定的(或是有意填充,或是本就如此)。因此这几个字节的内容也被称为魔数 (magic number),因为根据这几个字节的内容就可以确定文件类型。有了这些魔术数字,我们就可以很方便的区别不同的文件。

代码

通过poi的FileMagic类进行实现,只有poi3.17版本以上才能使用FileMagic。

private boolean isExcelFile(MultipartFile excelFile) throws IOException {
        boolean result = false;
        //转换为input,为了使流能够实现markSupported
        InputStream is = new BufferedInputStream(excelFile.getInputStream());
        //使用poi中的类判断
        FileMagic fileMagic = FileMagic.valueOf(is);
        if (Objects.equals(fileMagic, FileMagic.OLE2) || Objects.equals(fileMagic, FileMagic.OOXML)) {
            result = true;
        }
        is.close();
        return result;
    }
web中实现注意

需要转换Input流,让其可以实现marksupported方法

判断对象属性是否为空

空对象

空对象必须是未创建的实例,例如:Test test ;
而实例化的对象不能是空对象,例如:Test test = new Test();
所以对于实例化的对象使用 test == null 是不可行的,得对属性判空

代码
利用反射进行属性判空操作
  private boolean isAllFieldNull(Object object) {
        //获取类对象
        Class clazz = object.getClass();
        //获取属性集合
        Field[] fs = clazz.getDeclaredFields();
        boolean flag = true;
        try {
            for (Field field : fs) {
                //设置私有属性也可访问
                field.setAccessible(true);
                //获取属性的值
                Object val = field.get(object);
                //属性不为null
                if (val != null) {
                    flag = false;
                    break;
                }
            }
        } catch (IllegalAccessException e) {
            LOG.error("<font color='red'> 比较对象中属性为null异常:" + e.getMessage() + "</font>");
        }
        return flag;
    }

mybatis实现批量插入数据

注解代码
  //collection 集合数据list
  //item 临时接受的TestBean对象
  //separator表示以什么为分隔符
  @Insert("<script> INSERT INTO chmx "
            + " (id,xmbh,xmmc,zh,ch,dyh,fjh,jzmj,gyftmj,tnmj,ftxs,chlx) "
            + " VALUES "
            + " <foreach collection = 'list' item='record' separator=',' > "
            + " (f_newid(),#{record.xmbh},#{record.xmmc},#{record.zh},#{record.ch},"
            + " #{record.dyh},#{record.fjh},#{record.jzmj},#{record.gyftmj},"
            + " #{record.tnmj},#{record.ftxs},#{record.chlx}) "
            + " </foreach>"
            + " </script>")
    public void save(List<TestBean> list);
上一篇 下一篇

猜你喜欢

热点阅读