2021-08-22

Springboot有关(假的)excel导入的问题

今天在导入excel时遇到了以下报错。

Invalid header signature; read 0xF1CECEC8B7C1B5D1, expected 0xE11AB1A1E011CFD0 - Your file appears not to be a valid OLE2 document

这个excel是由LabVIEW生成的,由于文件格式不符,导致字节流能够正常读入,但是在转换为workbook时报错。

 workbook = new HSSFWorkbook(inputStream);

解决方法:将文件另存为,然后导入另存的文件。
但是由于我的文件是大量产生的,不可能让用户挨个另存为,这个方法只在文件少时适用。

将LabVIEW生成的excel另存为,就可以看到它原本的文件类型为文本文件,且用制表符分割的。

在这里插入图片描述
这里有个思路,将文本文件转换为真正的excel,然后再读取excel里的数据。然后我搜了一下.txt转.xls的方法,发现还是需要将文本文件的每一个数据读出来,然后写入excel中。直接读取文本文件的数据比转换成excel再读取容易很多,于是我就直接利用文本文件读取了。

放一下txt导入数据的数据库的代码,这里的Entity和Service都改成自己的Entity和Service

  public R trainingindo(@RequestParam MultipartFile file) throws Exception{
//        创建List保存从文件中读取的文件
        List<Entity> list = new ArrayList<>();
//        截断数据
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(file.getInputStream()));
        String line = "";
//        从第二行开始读起
        while ((line = bufferedReader.readLine()) != null){
            String[] arr = line.split("\t");
            Entity entity = new Entity(Long.parseLong(arr[0]),Double.parseDouble(arr[1]),Double.parseDouble(arr[2]),Double.parseDouble(arr[3]));
            list.add(entity);
        }
//        保存到数据库对应的表中
        Service.saveBatch(list,list.size());
        return R.ok();
    }

Service层里继承了IService,能够批量存数据到数据库当中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值