excel转json

  1. const Excel = require('exceljs/modern.browser')
  2. const fs = require('fs')
  3. var workbook = new Excel.Workbook()
  4. workbook.xlsx.readFile('./133820评论数据.xlsx')
  5. .then(function () {
  6. var worksheet = workbook.getWorksheet(1)
  7. let dataArray = changeRowsToDict(worksheet)
  8. const json = JSON.stringify(dataArray)
  9. fs.writeFile('excel.json', json, 'utf8', function (error) {
  10. if (error) {
  11. console.log(error)
  12. return false
  13. }
  14. console.log('写入成功')
  15. })
  16. })
  17. /* 将所有的行数据转换为json */
  18. function changeRowsToDict (worksheet) {
  19. let dataArray = []
  20. let keys = []
  21. worksheet.eachRow(function (row, rowNumber) {
  22. if (rowNumber === 1) {
  23. keys = row.values
  24. } else {
  25. // method1 ===============
  26. // let rowDict = cellValueToDict(keys, row.values);
  27. // dataArray.push(rowDict);
  28. // method2 ===============
  29. let rowDict = cellValueToDict2(keys, row)
  30. dataArray.push(rowDict)
  31. }
  32. })
  33. return dataArray
  34. }
  35. /* keys: {id,name,phone}, rowValue:每一行的值数组, 执行次数3次 */
  36. function cellValueToDict (keys, rowValue) {
  37. let rowDict = {}
  38. keys.forEach((value, index) => {
  39. rowDict[value] = rowValue[index]
  40. })
  41. return rowDict
  42. }
  43. /* keys: {id,name,phone}, rowValue:每一行的值数组, 执行次数3次 */
  44. function cellValueToDict2 (keys, row) {
  45. let data = {}
  46. row.eachCell(function (cell, colNumber) {
  47. var value = cell.value
  48. if (typeof value === 'object') value = value.text
  49. data[keys[colNumber]] = value
  50. })
  51. return data
  52. }

json文件处理

  1. const fs = require('fs')
  2. const filePath = 'excel.json'
  3. fs.readFile(filePath, function (err, data) {
  4. if (err) {
  5. return console.error(err)
  6. }
  7. // console.log('异步读取: ' + data.toString())
  8. const json = JSON.parse(data).slice(0, 50)
  9. const list = JSON.stringify(json)
  10. fs.writeFile(filePath, list, 'utf8', function (error) {
  11. if (error) {
  12. console.log(error)
  13. return false
  14. }
  15. console.log('写入成功')
  16. })
  17. })