⏹转换方法来源:

https://www.30secondsofcode.org/js/s/csv-to-json
https://www.30secondsofcode.org/js/s/array-to-csv

⏹上传CSV转JSON

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>CSV转换JSON</title>
</head>
<body><label for="ipt">读取本地的csv</label><br><!-- accept属性限制只能上传csv文件 --><input id="ipt" type="file" accept=".csv" />
</body>
<script src="../jquery.min.js"></script>
<script>// 转换CSV为JSON数据const CSVToJSON = (data, csvTitleKbn, delimiter = ',') => {const titles = data.slice(0, data.indexOf('\n')).split(delimiter);const hanleData = data.slice(data.indexOf('\n') + 1).split('\n');const json = hanleData.map(v => {const values = v.split(delimiter);return csvTitleKbn.reduce((obj, title, index) => ((obj[title] = values[index]), obj),{});});return json;};// 文件上传后触发change事件$(ipt).change((event) => {// 获取出上传的文件const {target: {files},target} = event;const file = files[0];// 文件类型校验if(!file?.name.includes(".csv")) {// 清空文件上传框target.outerHTML = target.outerHTML;alert("请选择csv文件上传!");return;}// 构建文件读取对象const reader  = new FileReader();// 将上传的文件读取为文本reader.readAsText(file);// 当文件完全读取完成之后触发load事件,从响应事件中解构出读取的文本reader.addEventListener('load', ({target: {result: csvText}}) => {// CSV标题汉字所对应的区分名const csvTitleKbn = ["id", "name"];// 将CSV文本转换为JSON数据const jsonFromCsvFile = CSVToJSON(csvText, csvTitleKbn);console.log(jsonFromCsvFile);});})
</script>
</html>

⏹JSON数据转CSV下载

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>JSON转换CSV</title>
</head>
<body><button id="btn">点击下载CSV文件</button>
</body>
<script src="../jquery.min.js"></script>
<script>// 转换Json到CSV数据const JSONtoCSV = (arr, columns, csvTitleNames, delimiter = ',') => {// 转换为csv数据Listconst csvdataList = [columns.join(delimiter),...arr.map(obj =>columns.reduce((acc, key) =>`${acc}${!acc.length ? '' : delimiter}"${!obj[key] ? '' : obj[key]}"`,'')),];// 将标题替换为汉字csvdataList[0] = csvTitleNames;// 转换为csv字符串return csvdataList.join('\n');}// 下载CSV文件function downloadCSVFile(fileName, csvFileContent) {// 防止中文乱码的unicodeconst unicodeMark = "\ufeff";const blob = new Blob(// 必须添加此unicode,否则CSV中的中文会乱码[unicodeMark + csvFileContent], {type: 'text/csv'});// 创建一个隐藏的用来下载文件的a标签const aElement = document.createElement('a');aElement.download = fileName;aElement.style.display = 'none';// 将文件放入内存中const src = URL.createObjectURL(blob);aElement.href = src;document.body.appendChild(aElement);// 模拟点击下载事件,进行下载aElement.click();// 点击之后,移除我们定义的隐藏a标签document.body.removeChild(aElement);// 移除文件对象URL.revokeObjectURL(src);}// 模拟从后端获取的数据const dataFromAPI = [{ id: 1, name: '贾飞天' }, { id: 3, name: '高橋', address: '地球' }, { id: 6 },{ name: '李四' }]// CSV标题const csvTitleKbn = ['id', 'name'];const csvTitleName = ['ID', '姓名'];$(btn).click(() => {// 将json数据转换为CSV格式const csvFileContent = JSONtoCSV(dataFromAPI, csvTitleKbn, csvTitleName);const fileName = `自定义csv${new Date().getTime()}.csv`;// 下载CSVdownloadCSVFile(fileName, csvFileContent);});
</script>
</html>

⏹数组转CSV

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>数组转CSV</title>
</head>
<body></body>
<script>// 转换数组到CSVconst arrayToCSV = (arr, delimiter = ',') => {const csvData = arr.map(v => {return v.map(x => (isNaN(x) ? `"${x.replace(/"/g, '""')}"` : x)).join(delimiter)}).join('\n');return csvData;}// 模拟从后端获取到的数据const dataFromAPI = [['a', '"b" great', '测试数据'],['c', 3.1415]];// 将数组转换为csvconst csvData = arrayToCSV(dataFromAPI);console.log(csvData);
</script>
</html>

JS 上传CSV转JSON | JSON数据转CSV下载 | 数组转CSV相关推荐

  1. ajax文件上传报400,js ajaxfileupload.js上传报错的解决方法

    相信大家在工作中经常用到文件上传的操作,因为我是搞前端的,所以这里主要是介绍ajax在前端中的操作.代码我省略的比较多,直接拿js那里的 $.ajaxFileUpload({ url:'www.cod ...

  2. 怎么接收layui上传的文件_layui 上传文件_批量导入数据UI的方法

    使用layui的文件上传组件,可以方便的弹出文件上传界面. 效果如下: 点击[批量导入]按钮调用js脚本importData(config)就可以实现数据上传到服务器. 脚本: /*** * 批量导入 ...

  3. 使用curl上传带有文件的POST数据

    本文翻译自:Using curl to upload POST data with files I would like to use cURL to not only send data param ...

  4. js上传文件到c 服务器,js上传文件到c服务器

    js上传文件到c服务器 内容精选 换一换 安装传输工具在本地主机和Windows云服务器上分别安装数据传输工具,将文件上传到云服务器.例如QQ.exe.在本地主机和Windows云服务器上分别安装数据 ...

  5. js上传视频,预览视频

    js上传视频,预览视频 <videostyle="width:300px; height:auto;object-fit: fill;"playsinlinecontrols ...

  6. node将当前文件上传到服务器,以编程方式将文件从node.js上传到另一个Web服务器...

    我需要将文件从node.js应用程序推送到其他地方运行的Web服务器,该服务器通过典型的上载机制接受文件.例如,假设接收服务器有一个网页,这样的形式:以编程方式将文件从node.js上传到另一个Web ...

  7. logstash清除sincedb_path上传记录,重传日志数据

    logstash清除sincedb_path上传记录,重传日志数据 logstash通过一个名为 sincedb_path 下的记录文件记录当前logstash已经上传的日志文件的位置,如果指定为 n ...

  8. 服务器上传excel文件并读取数据,asp.net上传Excel文件并读取数据的实现方法

    前言 本文主要给大家介绍了关于asp.net上传Excel文件并读取数据的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧 实现如下: 前台代码:使用服务端控件实现上传 服务端 ...

  9. 七牛云 vue 图片上传简单解说,js 上传文件图片

    七牛云 vue 图片上传简单解说,js 上传文件图片 一.七牛云简介 首次使用七牛云存储进行项目的图片存储,整了一上午才整明白,这些官方的教程把明白人也给说糊涂了,文档很不规范. 七牛云有免费的使用额 ...

  10. JS上传文件(base64字符串和二进制文件流)

    ①以base64字符串上传(使用FileReader对象获取文件的base64字符串) FileReader参考文档: FileReader - Web API 接口参考 | MDN FileRead ...

最新文章

  1. 机器学习PAL数据可视化
  2. 【POCO】POCO学习总结(四)——MinGW编译poco
  3. 076_html5事件属性
  4. QProcess 类
  5. ajax实现一个前台的进度条,前台ajax实现上传文件并且有进度条
  6. Golang类型转换模块 - gconv
  7. Windows® Server 2003 SP1 Platform SDK Web Install
  8. 真假Kingston U盘识别
  9. 城市云脑研究之三,人工智能在城市云脑建设中的地位与作用
  10. 【Android -- 技术周刊】第 020 期
  11. GTK之信号和回调函数
  12. 安装torchvision:ImportError:DLL load failed:找不到指定的模块
  13. 数字档案管理系统解决方案 - 数字化档案建设方案
  14. 计算机应用的毕业论文论文,计算机应用本科毕业论文
  15. 2021年最新阿里面经分享,复盘我的阿里巴巴三轮技术面,希望对大家有帮助!
  16. 什么是指针压缩?如何开启和关闭指针压缩?为什么要进行指针压缩?有哪些注意的地方?
  17. Java 小白 设计电池类,在电池类的构造方法中声明一节5号电池的电压为1.5伏,使用this关键字调用电池类中的构造方法,实现电压为9伏的叠层电池,
  18. SpringSecurity(Web权限方案)
  19. 我的警长 灵宝西所第一警务区 陈静
  20. Ucore Lab7

热门文章

  1. 记录一天mysql查询时差8小时问题
  2. 品牌增删改查案例,登录以及注册
  3. 【C#基础】Dynamic类型和正确用法
  4. 寻求合作 - 求职 - 创业 / 有意向的来这里交流一下
  5. android+背景+网络图片,android背景图片平铺
  6. CTO是什么样的职位?
  7. Yolov5轻量化:MobileNetV3,轻量级骨架首选
  8. 美甲店适合的会员管理系统
  9. 部分地区信息学中小学组试卷目录
  10. 云鸟科技官微及员工声讨CEO拖欠工资、强迫集资,CEO是微播易创始人