首页 > 其他分享 >手撸在线json转excel工具

手撸在线json转excel工具

时间:2025-01-04 16:33:12浏览次数:3  
标签:arr 在线 excel json let result null

js工具之json转excel

html+js实现json数据转为excel,支持json数组转换,无差别json对象转换

文章目录


应用场景

爬虫,网页数据抓取出来的数据大多为json格式,而且无效字段特别多,基于此,本人手撸了个json转为excel的js工具,提供给大家使用,当然网上也有许多类似的工具。比如我们遇到这样的json时:

{
	"6": {
		"mcId": 536839,
		"isSpecialItem": 0,
		"itemClassId": "9",
		"itemClassOfflineId": "233",
		"itemClassName": null,
		"itemId": "6",
		"itemUnitList": [
			{
				"mcId": 536839,
				"itemId": "6",
				"unId": "-1",
				"unName": "份",
				"unPicFile": null,
				"unSmallPicFile": null
			}
		],
		"itemLabel": "",
		"dinnerMode": null,
		"limitQuantityFlg": 0,
		"limitQuantity": null,
		"unId": "-1"
	},
	"7": {
		"mcId": 536839,
		"isSpecialItem": 0,
		"itemClassId": "9",
		"itemClassOfflineId": "19418400000000011",
		"itemClassName": null,
		"itemUnitList": [
			{
				"mcId": 536839,
				"itemId": "7",
				"unId": "-1",
				"unName": "份",
				"isSale": 1
			}
		],
		"itemLabel": "",
		"dinnerMode": null,
		"limitQuantityFlg": 0,
		"limitQuantity": null,
		"unId": "-1"
	}
}

简直无法解析出结果,而且目前线上的必须基于数据,非常麻烦。


提示:以下是本篇文章正文内容

一、本工具能干什么?

1、纯html+js写的,无需下载,线上化操作。
2、支持多种json结构,提供字段提取模式和传统数组转换模式可以选择,字段提取模式无需你的json需要有规范的格式要求都可转换为excel
3、体验链接
4、使用效果截图

无脑模式

在这里插入图片描述
那输出窗的内容复制到excel
在这里插入图片描述

数组模式

在这里插入图片描述
在这里插入图片描述

二、源码

用最简洁的方式写工具,上菜上菜

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>json在线转excel</title>
    <script src="../static/js/vue.min.js"></script>   

</head>
<body>
    <div id="app" style="width: 100%">
        <div style="display: flex;line-height: 40px;">
            <p style="width: 80px">模式:</p>
            <div style="width: 200px">
                <input type="radio" style=" height: 20px;width: 20px"  :value="0" v-model="mode">
                <label :for="0">无脑模式</label><br>
                <input type="radio"  style=" height: 20px;width: 20px" :value="1"  name="fruit" v-model="mode">
                <label :for="1">json数组提取</label><br>
            </div>
            <div style="width: 100%;display: inline-flex">
                <div style="width: 1200px;height: 100px;" v-if="!mode">
                    <span style="color: red">****很重要!!!这里粘贴你的json数据</span>
                    <textarea  style="width: 100%" name="" placeholder="请输入字段,用竖线(|)隔开,例如:name|title|img" v-model="fields" cols="30" rows="2"></textarea>
                </div>
                <button @click="json2Excel">提&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;取</button>
            </div>
        </div>
        <div style="display: flex">
            <div style="width: 500px;height: 800px; ">
                <span style="color: red">****很重要!!!这里粘贴你的json数据</span>
                <textarea placeholder='请张贴json数据,如:[{"a":1,"b":2},{"a":1,"b":2},{"a":1,"b":2}]'  style="width: 100%" name=""  v-model="str" cols="30" rows="80"></textarea>
            </div>
            <div  style="width: 1000px;">
                <span style="color: red">****很重要!!!完事后复制转换后的结果粘贴到excel即可</span>
                <textarea name=""  placeholder="数据结果,完事后复制张贴到excel就可形成表格" style="width: 100%"  :value="output" cols="30" rows="80"></textarea>
            </div>
        </div>
    </div>
    <script>
        var app = new Vue({
            el: "#app",
            data: {
                str:"",
                fields:"",
                output:"",
                mode:0
            },
            created: function () {
            },
            methods:{
                json2Excel() {
                    if (this.mode) {
                        this.arr2Excel()
                    }else {
                        this.field2excel()
                    }

                },
                field2excel(){
                    if (!this.fields) {
                        alert("请输入字段")
                        return
                    }
                    if (!this.str) {
                        alert("请输入json数据")
                        return
                    }
                    let arr = this.fields.split("|");
                    if (!arr.length) {
                        alert("请输入字段")
                        return;
                    }
                    let resultData = []
                    let maxLen = 0;
                    for (let i = 0; i < arr.length; i++) {
                        let field = arr[i].trim();
                        let regStr = '"'+field+'":\\s{0,}("([^"]+)"|(\\d+))';
                        let pattern = new RegExp( regStr,"g")
                        let col = []
                        let colArr = []
                        while (col = pattern.exec(this.str)) {
                            if (col && col.length) {
                                colArr.push(col[2]);
                            }
                        }
                        resultData.push(colArr)
                        maxLen = Math.max(maxLen,  colArr.length )
                    }
                    let result = [];
                    result.push(arr.join('\t'))
                    for (let j = 0; j < maxLen; j++) {
                        let row = []
                        for (let i = 0; i < arr.length; i++) {
                            row.push(resultData[i][j]);
                        }
                        result.push(row.join('\t'))
                    }
                    this.output = result.join('\n')
                },
                arr2Excel(){
                    let arr = eval(this.str);
                    if (!arr || !Array.isArray(arr) || !arr.length) {
                        alert("无效的json数组")
                        return
                    }
                    let result = [];
                    let keys = Object.keys(arr[0]);
                    result.push(keys.join("\t"))
                    for (let i = 0; i < arr.length; i++) {
                        let vals =  Object.values(arr[i]);
                        result.push(vals.join("\t"))
                    }
                    this.output = result.join('\n')
                },
                getClipboardData:async function () {

                }
            }
        })
    </script>
</body>
</html>

2.如果你没有vue.min.js

戳这里这里下载


总结

天天做项目给人家做数字转型、降本增效,我们也要给自己提提效率(偷偷懒),代码拿走,点赞留下,谢谢大家!

标签:arr,在线,excel,json,let,result,null
From: https://blog.csdn.net/u011085154/article/details/144929398

相关文章

  • 特殊数据类型的深度分析:JSON、数组和 HSTORE 的实用价值
    title:特殊数据类型的深度分析:JSON、数组和HSTORE的实用价值date:2025/1/4updated:2025/1/4author:cmdragonexcerpt:随着数据管理需求的多样化,许多现代数据库系统开始支持特殊数据类型,以满足更多复杂应用场景的需求。在PostgreSQL中,JSON、数组和HSTORE类型为开......
  • 可白嫖源码-Springboot农产品在线交易系统
    摘 要随着信息技术的不断发展,电子商务网站的用户规模增长迅猛。与此同时许多地区依然存在着农产品销售难、农产品增产与农民收入增加不同步的矛盾,于是扩展农产品销售渠道就显得十分重要了。本文主要是采用Java语言、Springboot框架、Mysql数据库作为开发平台,系统采用B/S结构......
  • EXCEL中自动突出显示(自动高亮)行或列
    解决的问题EXCEL中,当选择的单元格距离列首或行首过远时,考验眼睛的时候就到了。解决方法很多,如果想要自动突出显示,就只能上vba代码了。方法一:使用快捷键shift+spacectrl+shift+方向键方法二:使用条件格式规则,与按键F9刷新表格选中表格全部单元格(点击表格左上角的三角......
  • Delphi7操作Excel读取数据有效性检查下拉列表内容?Formula属性
    usescomobj;//需要引用单元procedureWriteToExcel(str_filename:string);//读取原来的Excel单元格的下拉列表,自动填写varExcelApp,Workbook,Sheet,SheetHidden:OleVariant;Range:OleVariant;i,j,i_max:Integer;str_spec,str_spec2:string;strlst,strlst2:TSt......
  • 东营做网站让你的在线商店脱颖而出
    当您想要让您的在线商店脱颖而出时,东营做网站是一个重要的步骤。一个精心设计的网站可以吸引更多的访客,并提升用户体验。通过一个专业的网站,您可以展示您的产品和服务,吸引潜在客户的注意。一个优秀的网站设计应该注重用户友好性和视觉吸引力。在东营做网站时,确保网站布局清晰......
  • JSON -2024/11/2
    JSON本质就是一个字符串JSON串的键要求必须使用双引号括起来,而值根据要表示的类型确定导入依赖<!--https://mvnrepository.com/artifact/taglibs/standard--><dependency><groupId>taglibs</groupId><artifactId>standard</artifactId>......
  • ssm易学在线学习平台8r4rg(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、项目背景与意义随着信息技术的迅猛发展,在线教育已成为人们获取知识、提升技能的重要途径。易学在线学习平台旨在通过整合优质教育资源,为用户提......
  • 【已解决】PDF文档有密码怎么办(2024新)免费在线工具PDF2Go
    强大的解密工具PDF2Go使用指南一、PDF2Go简介        PDF2Go是由德国QaamGo公司开发的在线PDF工具箱,以其强大的功能和用户友好的界面而闻名。它不仅免费,而且不需要用户注册或安装任何软件,只需打开浏览器即可使用。二、功能特点1.免费且无需注册PDF2Go的所有功能......
  • 电商团队信息共享的最佳方案:在线协同工具的应用
    电商行业发展迅速,竞争也日益激烈,团队协作效率已成为企业能否脱颖而出的决定性因素。一个高效的电商团队不仅需要快速反应和高效执行,更需要具备流畅的沟通和协同机制。而在线协同编辑文档工具,正是推动这一机制的核心工具之一。电商团队架构的挑战与需求电商团队通常由多个职能部......
  • 【手把手-包教包会系列】java按模板多sheet导出Excel
    手把手带你java按模板多sheet导出Excel【包教包会系列】废话不多说直接撸代码1.引入依赖推荐使用3.2以上版本,原因是在性能上会有新的优化<!--easyExcel--><dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.......