當(dāng)前位置:
首頁(yè) >
前端技术
> javascript
>内容正文
javascript
JSON数据转EXCEL
生活随笔
收集整理的這篇文章主要介紹了
JSON数据转EXCEL
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
JSON數(shù)據(jù)轉(zhuǎn)EXCEL
文章目錄
- JSON數(shù)據(jù)轉(zhuǎn)EXCEL
- 前言
- 一、需要安裝哪些依賴?
- 二、使用步驟
- 1.導(dǎo)入
- 2.封裝的jsonToExcel函數(shù)
- 總結(jié)
前言
一、需要安裝哪些依賴?
- npm install -S file-saver 用來(lái)生成文件的web應(yīng)用程序
- npm install -S xlsx 電子表格格式的解析器
二、使用步驟
1.導(dǎo)入
代碼如下(示例):
import { saveAs } from 'file-saver' import XLSX from 'xlsx/dist/xlsx.full.min'2.封裝的jsonToExcel函數(shù)
具體代碼如下(示例):
function datenum (v, date1904) {if (date1904) v += 1462let epoch = Date.parse(v)return (epoch - new Date(Date.UTC(1899, 11, 30))) / (24 * 60 * 60 * 1000) }function dataTows (data, w) {var ws = {s: {'!row': [{ wpx: 67 }]}}ws['!cols'] = []for (var n = 0; n !== data[0].length; ++n) {ws['!cols'].push({wpx: w[n]})}const range = { s: { c: 10000000, r: 10000000 }, e: { c: 0, r: 0 } }for (let R = 0; R !== data.length; ++R) {for (let C = 0; C !== data[R].length; ++C) {if (range.s.r > R) range.s.r = Rif (range.s.c > C) range.s.c = Cif (range.e.r < R) range.e.r = Rif (range.e.c < C) range.e.c = Cconst cell = { v: data[R][C] }if (cell.v == null) continueconst cellRef = XLSX.utils.encode_cell({ c: C, r: R })if (typeof cell.v === 'number') cell.t = 'n'else if (typeof cell.v === 'boolean') cell.t = 'b'else if (cell.v instanceof Date) {cell.t = 'n'cell.z = XLSX.SSF._table[14]cell.v = datenum(cell.v)} else cell.t = 's'ws[cellRef] = cell}}if (range.s.c < 10000000) ws['!ref'] = XLSX.utils.encode_range(range)return ws } function Workbook () {if (!(this instanceof Workbook)) return new Workbook()this.SheetNames = []this.Sheets = {} }function s2ab (s) {const buf = new ArrayBuffer(s.length)const view = new Uint8Array(buf)for (let i = 0; i !== s.length; ++i) view[i] = s.charCodeAt(i) & 0xFFreturn buf }/** th => 表頭* data => 數(shù)據(jù)* fileName => 文件名* fileType => 文件類(lèi)型* sheetName => sheet頁(yè)名*/ export default function toExcel ({ th, data, fileName, fileType, sheetName, w }) {data.unshift(th)const wb = new Workbook()const ws = dataTows(data, w)sheetName = sheetName || 'sheet1'wb.SheetNames.push(sheetName)wb.Sheets[sheetName] = wsfileType = fileType || 'xlsx'var wbout = XLSX.write(wb, { bookType: fileType, bookSST: false, type: 'binary' })fileName = fileName || '列表'saveAs(new Blob([s2ab(wbout)], { type: 'application/octet-stream' }), `${fileName}.${fileType}`) }總結(jié)
jsonToExcel函數(shù)的封裝是為了便于前端導(dǎo)出excel文件。
總結(jié)
以上是生活随笔為你收集整理的JSON数据转EXCEL的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。