XLSX json转文本流 json转文件

news/2024/7/24 6:31:24 标签: json, javascript

封装一个公共 xlsx.js

javascript">import { read, utils, writeFile } from 'xlsx'
// 文本流转json 
// 入参:文本流 回调 入参{}
export const readJsonFromFile = (file, callBackFn, opt) => {
  const reader = new FileReader()
  reader.readAsArrayBuffer(file)
  reader.onload = function (e) {
    const workbook = read(e.target.result)
    console.info('excel读取结果:', workbook)
    const firstSheetName = workbook.SheetNames[0]
    const worksheet = workbook.Sheets[firstSheetName]
    // 读取header
    const data = utils.sheet_to_json(worksheet, opt)
    if (callBackFn) callBackFn(data)
  }
}
// json转文件
// 入参:文件数组[] 头数组[] 文件名字符串
export const readJsonToFile = (data, header, fileName) => {
  console.info(data)
  let ws
  if (data && header) {
    ws = utils.json_to_sheet(data, { header: header })
  } else if (data) {
    ws = utils.json_to_sheet(data)
  }
  if (ws) {
    const wb = utils.book_new()
    utils.book_append_sheet(wb, ws, 'sheet1')
    writeFile(wb, fileName + '.xlsx')
  }
}

例子:

文本流转json

javascript">readJsonFromFile(this.file.raw, (data) => {
if (!data || data.length === 0) {
  this.$message.error('模板Excel无数据')
  this.file = null
  return
}

// 输出JSON
console.log(data)

// defval 给空单元格占位空字符串 raw: false 将输出的数字转为字符串
}, {defval: '', raw: false})

json转文件

javascript">const selectedItemList = []
letheaders = ''
let title = ''
headers = ['SPU编号', 'SPU名称', '类别']
this.activity.spuList.forEach(item => {
    const configItem = {}
    configItem[headers[0]] = item.productCode
    configItem[headers[1]] = item.name
    configItem[headers[2]] = item.categoryName
    selectedItemList.push(configItem)
})
title = '商品导出数据'
readJsonToFile(selectedItemList, headers, title)

http://www.niftyadmin.cn/n/5078131.html

相关文章

FreeRTOS学习笔记(一)

一、基础知识思维导图 vtaskdelay函数会开启中断,所以在临界区不能用vtaskdelay 二、任务的创建与删除 2.1、任务的动态创建与删除 ........#define START_TASK_PRIO 1 #define START_TASK_STACK_SIZE 128 TaskHandle_t start_task_handler; void …

flink以增量+全量的方式更新广播状态

背景 flink在实现本地内存和db同步配置表信息时,想要做到类似于增量(保证实时性) 全量(保证和DB数据一致)的效果,那么我们如何通过flink的广播状态外部定时器定时全量同步的方式来实现呢? 实现增量全量的效果 package wikiedits.schedule…

hive 知识总结

​编辑 社区公告教程下载分享问答JD 登 录 注册 01 hive 介绍与安装 1 hive介绍与原理分析 Hive是一个基于Hadoop的开源数据仓库工具,用于存储和处理海量结构化数据。它是Facebook 2008年8月开源的一个数据仓库框架,提供了类似于SQL语法的HQL&#xf…

单目标应用:遗传算法(Genetic Algorithm,GA)求解微电网优化MATLAB

一、微网系统运行优化模型 微电网优化模型介绍: 微电网多目标优化调度模型简介_IT猿手的博客-CSDN博客 二、遗传算法GA 遗传算法(Genetic Algorithm,GA)起源于对生物系统所进行的计算机模拟研究,是一种随机全局搜索…

B端企业如何通过软文提升品牌影响力?

生活中我们采购某种商品时总会考虑这类商品行业类的知名品牌,这就是品牌影响力的重要性,B端企业也需要品牌影响力,由于B端企业的特殊性,它更需要通过口碑和声誉的提升增强用户信任。软文就能帮助企业提升品牌影响力,下…

Apache Doris 数据建模之 Aggregate Key 模型

了解 Doris 数据模型对于我们使用 Doris 来解决我们业务问题非常重要,这个系列我们将详细介绍 Doris 的三种数据模型及 Doris 数据分区分桶的一些策略,帮助用户更好的使用 Doris 。 这个系列我会讲解 Doris 的三种数据模型及在这三种数据模型之上的 Rol…

【JAVA版本】最新websocket获取B站直播弹幕——非官方API

一、教程 如果只想要代码实现,直接看第二部分。 1、相关依赖 fastjson2用于解析JSON字符串,可自行替换成别的框架。 hutool-core用于解压zip数据,可自行替换成别的框架。 <dependency><groupId>com.alibaba.fastjson2</groupId><artifactId>fas…

JVM第一讲:JVM相关知识体系详解+面试(P6熟练 P7精通)

JVM相关知识体系详解面试(P6熟练 P7精通) 面试时常常被面试官问到JVM相关的问题。本系列将给大家构建JVM核心知识点全局知识体系&#xff0c;本文是JVM第一讲&#xff0c;JVM相关知识体系详解和相关面试题梳理。 文章目录 JVM相关知识体系详解面试(P6熟练 P7精通)1、JVM学习建议…