Node-10行代码实现Excel转Json,甚至不用这么多行

803 阅读1分钟

背景

  当我们在做需求的时候,无可厚非地都会碰上产品经理突然丢一个 Excel 文件给你,让你去把它当成假数据或者可选选项的情况,这时我们就要将 Excel 转成 Json 格式才能供我们使用,文件数据少一点地我们或许会选择直接手动,可要是有几十上百行的数据呢,比如下面这种👇

1666529696128.png

依赖库

该功能的实现主要是依赖SheetJSSheetJS 是目前 Github 上 star 数量最多的处理 Excel 的库,支持解析多种格式表格 XLSX / XLSM / XLSB / XLS / CSV,解析采用纯 js 实现,写入需要依赖 nodejs 实现生成写入Excel,可以生成子表Excel,功能强大

官方 Github 地址:github.com/rockboom/Sh…

快速开始

1、初始化

创建一个文件夹 excel-to-josn

npm init -y

2、安装依赖

npm install xlsx

3、开始(以上述国际化表为例)

1、新建 read.js,同目录下新建一个 file 文件夹,用来存放 excel 文件

├─ file
│  ├─ language.xlsx
├─ package-lock.json
├─ package.json
└─ read.js

2、read.js 引用依赖,读取 excel 文件

const xlsx = require('xlsx')
// 读取 excel 文件
const workbook = xlsx.readFile('./file/language.xlsx')
// 第一个 sheet 下的数据 Sheets['sheet名']
const res = workbook.Sheets['Sheet1']

1666531527509.png

3、使用 SheetJSjson

const data = xlsx.utils.sheet_to_json(res)

1666531597187.png 瞬间就拿到我们想要的样子了😄。那要是改下字段名,你可以这样

const text =  data.map(item => {
  return {
    en_name: item['语言(英语)'],
    zn_name: item['语言(中文)'],
    code: item['代码']
  }
})

1666531697091.png 快拿去试试把

完整代码

const xlsx = require('xlsx')
const workbook = xlsx.readFile('./file/language.xlsx').Sheets['Sheet1']
var data = xlsx.utils.sheet_to_json(workbook)
const text =  data.map(item => {
  return {
    en_name: item['语言(英语)'],
    zn_name: item['语言(中文)'],
    code: item['代码']}
})
console.log(text)