【easypoi】easypoi导入csv格式的文件

1.Maven依赖

 		<dependency>
            <groupId>cn.afterturn</groupId>
            <artifactId>easypoi-base</artifactId>
            <version>4.4.0</version>
        </dependency>
        <dependency>
            <groupId>cn.afterturn</groupId>
            <artifactId>easypoi-web</artifactId>
            <version>4.4.0</version>
        </dependency>
        <dependency>
            <groupId>cn.afterturn</groupId>
            <artifactId>easypoi-annotation</artifactId>
            <version>4.4.0</version>
        </dependency>

2.编写一个工具类

public class CsvUtils {
   /**
    * 导入Csv模板
    * @param file 导入的文件
    * @param clazz 类型
    * @throws Exception 导入异常
    */
   public static <T> List<T> importCsv(MultipartFile file,Class<T> clazz) throws Exception {
       return importCsv(file,0,1,clazz);
   }

   /**
    * 导入Csv模板
    * @param file 导入的文件
    * @param titleRow 标题行数
    * @param headerRow 头部行数
    * @param clazz 类型
    * @throws Exception 导入异常
    */
   public static <T> List<T> importCsv(MultipartFile file,Integer titleRow,Integer headerRow,Class<T> clazz) throws Exception {
       CsvImportParams params = new CsvImportParams();
       params.setTitleRows(titleRow);
       params.setHeadRows(headerRow);
       params.setEncoding("GBK");
       return importCsv(params,file, clazz);
   }
   /**
    *
    * @param params 导入参数设置
    * @param file 导入文件
    * @param clazz 类对象
    * @throws Exception 导入异常
    */
   public static <T> List<T> importCsv(CsvImportParams params, MultipartFile file, Class<T> clazz) throws Exception {
       return CsvImportUtil.importCsv(file.getInputStream(), clazz, params);
   }
}

3.实体类

这里使用的注解就和导入Excel时的一摸一样,不需要做什么特殊处理

@Data
@TableName(value ="jy_device_switch_power_system_info")
@ExcelTarget("jyDeviceSwitchPowerSystemInfo")
public class JyDeviceSwitchPowerSystemInfo implements Serializable {
    private static final long serialVersionUID = 1L;
    @TableId(type = IdType.AUTO)
    private Long id;
    @Excel(name = "设备名称(上报)",isImportField = "true")
    private String deviceName;
    @Excel(name = "设备ID")
    private String deviceId;
    @Excel(name = "站点ID")
    private String deviceStationId;
    @Excel(name = "资源标识(集团)")
    private String deviceResourceIdentification;
    @Excel(name = "所属地市")
    private String deviceBelongCity;
    @Excel(name = "所属区县")
    private String deviceBelongCounty;
    @Excel(name = "所属位置点")
    private String deviceBelongPosition;
    @Excel(name = "所属机房(集团)")
    private String deviceRoomName;
    @Excel(name = "系统类型(集团)")
    private String deviceCategoryName;
    @Excel(name = "创建时间")
    private Date createTime;
    }

4.导入

public class ImportController {

    @PostMapping("/import")
    @ApiOperation("导入数据")
    public AjaxResult<?> bbu(@RequestPart("file")MultipartFile file){
        try {

            List<JyDeviceSwitchPowerSystemInfo> jyDeviceSwitchPowerSystemInfos = CsvUtils.importCsv(file, JyDeviceSwitchPowerSystemInfo.class);
            jyDeviceSwitchPowerSystemInfos.forEach(System.out::println);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
}

遇到的问题:

我在这里写导入的时候,遇到了一个我百思不得其解的问题,导入的数据行数是对的,但是所有的数据都是null,网上搜了一下,根本搜不到解决方案,于是下载源码一步一步调试,终于发现问题,发现CSV的表头导入的时候全部乱码了,和注解里的文字注释根本对应不上,所以导入的数据全部是null
在这里插入图片描述
各位如果也出现类型的情况,用notepad打开你的文件,看看你的文件编码是什么,这里设置一下,再导入就好了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JeffHan^_^

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值