jcsv

介绍

jcsv一个简单的、轻量级的csv导入、导出库,相对于opencsv与javacsv,jcsv侧重于导入导出,包括导入校验、导出模板等。
源代码地址:https://gitee.com/lpxs/jcsv.git

使用说明

jcsv现在只支持集成到springboot工程中

依赖库

<dependency>
<groupId>com.github.lipengxs.jcsv</groupId>
<artifactId>jcsv-spring-boot-starter</artifactId>
<version>1.0.0</version>
</dependency>

配置说明

csv-config:
exportc:
- id: aa
compress:
enabled: true
file-size: 10000
type: zip
template: /template/aa.csv importc:
- id: throng-0
desc : "上传member_id"
max-size: 30 #单位m
start-row: 2
separator: ","
valicate:
- { col: 0, name: member_id,validateRegex: "^\\d{1,10}$", hint: "请填写10位以内的数字",required: true}
- id: throng-1
desc : "上传email+语言+站点"
max-size: 30 #单位m
separator: ","
start-row: 2
valicate:
- { col: 0, name: email,required: true,validateRegex: "^[éûàçùôîèíá¡N¿UóñúäöüßàèùåäöãáéàêçíşçöüğşàâäèéêëîïôœùûüÿçÀÂÄÈÉÊËÎÏÔŒÙÛÜŸÇA-Za-z0-9_\\-\\.\\u4e00-\\u9fa5]+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$", hint: "邮箱地址错误"}
- { col: 1, name: language ,required: true,hint: "语言错误" ,td-id: 11}
- { col: 2, name: site_id,required: true,hint: "站点错误" ,td-id: 13 }
- id: throng-3
desc: "上传member_id+占位符"
max-size: 30 #单位m
separator: ","
start-row: 2
check-column-size: false //该字段是表示不限制字段个数,没有在valicate中配置不需要校验
valicate:
- { col: 0, name: member_id,validateRegex: "^\\d{1,10}$", hint: "请填写10位以内的数字",required: true}
- id: throng-4
desc: "上传email"
max-size: 30 #单位m
start-row: 2
separator: ","
valicate:
- { col: 0, name: email,required: true,validateRegex: "^[éûàçùôîèíá¡N¿UóñúäöüßàèùåäöãáéàêçíşçöüğşàâäèéêëîïôœùûüÿçÀÂÄÈÉÊËÎÏÔŒÙÛÜŸÇA-Za-z0-9_\\-\\.\\u4e00-\\u9fa5]+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$", hint: "邮箱地址错误"}

导入

@Autowize
private CsvContext csvContext;
public BaseDataAPI upload(HttpServletRequest request,
@RequestParam("file") MultipartFile file){
try {
if(file==null){
return D.error("请上传文件");
} //解析模板内容,对比模板内容是否和上传的一样外层需要抓取异常因为错误信息是以异常来进行鉴别
List<Map<String,Object>> list= csvContext.transfer(file,"throng-"+uploadType,product); return D.ok(hash);
} catch (CsvImportException e) {
return D.error(e.getMessage());
} catch (Exception e) {
return D.error(e.getMessage());
}
}

导出

@Autowize
private CsvContext csvContext;
public BaseDataAPI export(){ 、try {
fileName = new String(fileName.getBytes(), "ISO8859-1");
} catch (UnsupportedEncodingException var3) {
var3.printStackTrace();
}
response.setContentType(MediaType.APPLICATION_OCTET_STREAM.toString());
response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
response.addHeader("Pargam", "no-cache");
response.addHeader("Cache-Control", "no-cache");
FileCopyUtils.copy(csvContext.export(id,data), response.getOutputStream());
} catch (Exception var4) {
var4.printStackTrace();
}
}

csv导入导出组件jcsv的更多相关文章

  1. [转]Office导入导出组件权限配置汇总

    原文地址:Office导入导出组件权限配置汇总 具体配置方法如下:  1:在服务器上安装office的Excel软件.  2:在"开始"->"运行"中输入 ...

  2. ASP.NET 开源导入导出库Magicodes.IE 完成Csv导入导出

    Magicodes.IE Csv导入导出 说明 本章主要说明如何使用Magicodes.IE.Csv进行Csv导入导出. 主要步骤 1.安装包Magicodes.IE.Csv Install-Pack ...

  3. vue中excel导入导出组件

    vue中导入导出excel,并根据后台返回类型进行判断,导入到数据库中 功能:实现js导入导出excel,并且对导入的excel进行展示,当excel标题名称和数据库的名称标题匹配时,则对应列导入的数 ...

  4. NPOI读写Excel组件封装Excel导入导出组件

    后台管理系统多数情况会与Excel打交道,常见的就是Excel的导入导出,对于Excel的操作往往是繁琐且容易出错的,对于后台系统的导入导出交互过程往往是固定的,对于这部分操作,我们可以抽离出公共组件 ...

  5. Office导入导出组件权限配置汇总

    NET导出Excel遇到的80070005错误的解决方法: 检索 COM 类工厂中 CLSID 为 {00024500-0000-0000-C000-000000000046}的组件时失败,原因是出现 ...

  6. .NET中的CSV导入导出(实例)

    导入代码,从csv文件得到datatable         /// <summary>        /// Get Data From Csv File         /// (Th ...

  7. 分享:一个基于NPOI的excel导入导出组件(强类型)

    一.引子 新进公司被安排处理系统的数据报表任务——对学生的考试成绩进行统计并能导出到excel.虽然以前也有弄过,但感觉不是很好,所以这次狠下心,多花点时间作个让自己满意的插件. 二.适用领域 因为需 ...

  8. ASP .Net C# ---CSV导入导出

    CSV和Excel大致相同  复制下来 数据传到方法里面就可以了 /// <summary> /// DataTable数据写入CSV文件 /// </summary> /// ...

  9. Excel导入导出组件的设计

    前言: 距离一篇文章,又八九个月过去了,随着在园子露脸的次数越来越少,正如我们淡忘上一波大神那样,我们也正下一波所淡忘. 这八九个月,前前后,游走在十来个项目上,忙,却找不到成就感. 人过30后,也是 ...

  10. Java CSV操作(导出和导入)

    Java CSV操作(导出和导入)  CSV是逗号分隔文件(Comma Separated Values)的首字母英文缩写,是一种用来存储数据的纯文本格式,通常用于电子表格或数据库软件.在 CSV文件 ...

随机推荐

  1. Java面试知识点(五)hashmap、hashtable和hashset

    1. 关于 HashMap 的一些说法: a) HashMap 实际上是一个 "链表散列" 的数据结构,即数组和链表的结合体.HashMap 的底层结构是一个数组,数组中的每一项是 ...

  2. VS License Header Manager 插件

    /************************************************************************************* * * 文 件 名: %F ...

  3. Centos7搭建Minio环境(配置开机自启)

    Minio 添加环境变量 # 设置控制台账号 最少3位 export MINIO_ACCESS_KEY=admin # 设置密码 最少8位 export MINIO_SECRET_KEY=123456 ...

  4. Exception in thread "main" java.lang.NoClassDefFoundError: io/netty/channel/EventLoopGroup

    最近在学习dubbo,跟着教程做,但是运行时报错,需要添加netty依赖 <dependency> <groupId>io.netty</groupId> < ...

  5. TP5系列 | Queue消息队列

    消费信息如下ThinkPHP5 Queue消息队列 优点 1.Queue内置了 Redis,Database,Topthink ,Sync这四种驱动,本文使用Redis驱动 2.Queue消息队列适用 ...

  6. C# ClassHelper动态创建程序集和类, 添加/删除类属性

    using System; using System.Collections.Generic; using System.Reflection; using System.Reflection.Emi ...

  7. 一文全懂:独立冗余磁盘阵列(RAID)

    独立冗余磁盘阵列,也就是大家常说的RAID,英文全称是:Redundant Array of Independent Disks,使用该技术,可以大幅提高硬盘设备的 IO 读写速度,还存在数种数据冗余 ...

  8. JavaScript实现防抖函数

    什么是防抖?防抖就是避免快速多次点击后执行过多的函数调用,就是本来你点击支付宝支付后不小心在点击一次,导致支付函数被调用了两次,还都执行了,付了两次钱. 防抖函数的思想就是将函数延迟调用,延迟时间内不 ...

  9. BTC 地址

    比特币地址(Bitcoin Address)是用于接收和发送比特币的唯一标识符,类似于传统金融系统中的银行账号.一个比特币地址由一串字母和数字组成,通常以1.3或bc1开头,具体长度为26至35个字符 ...

  10. 从菜鸟到大牛!嵌入式完整学习路线:STM32单片机-RTOS-Linux(文末领取开发板全套资料)

    ​ 嵌入式系统是许多现代电子设备和智能系统的核心,掌握嵌入式系统,意味着能够设计和开发更加智能化的产品.本文为所有想进入嵌入式领域的初学者提供一个完整系统学习的路线图,按照 "STM32单片 ...