node:脚本提取Excel 和 json输出Excel

提取Excel
const fs = require('fs')
const path = require('path')
const xlsx = require('node-xlsx')

// 根据要存储的路径,递归创建文件夹
const createDirSync = pathName => {
  if (fs.existsSync(pathName)) {
    return true
  } else {
    if (createDirSync(path.dirname(pathName))) {
      fs.mkdirSync(pathName)
      return true
    }
  }
}

// 写入到指定路径的文件
const writeToFile = (path, content) => {
  fs.writeFile(path, content, err => {
    console.log(`err`, err)
  })
}

const convertToJson = (excelPath, dstFilePath) => {
  // 读取Excel文件
  const workSheetsFromFile = xlsx.parse(excelPath)

  let result = []
  for (const item of workSheetsFromFile[0]['data']) {
    let [, name, , , address, , lng, lat] = item
    // 组装obj
    const obj = {
      name,
      address,
      location: { lng, lat }
    }
    result.push(obj)
  }
  result.splice(0, 1)

  if (!path.extname(dstFilePath)) {
    dstFilePath += '/default.json'
  }
  const dirPath = path.dirname(dstFilePath)
  if (createDirSync(dirPath)) {
    writeToFile(dstFilePath, JSON.stringify(result))
  }
}

// 使用
convertToJson('./党群服务中心.xls', './mine/jsons/abc.json')

输出Excel

输出表格的格式

地点名称 详细地址 联系电话 经纬度 标签
上木古社区政务自助机 龙岗区平湖街道上木古社区彩姿南路36号 0755-84256955 114.118674,22.668169
海源城(禾花社区)政务自助机 龙岗区平湖街道富安大道8号海源城西侧 0755-85238689 114.125593,22.682398
const fs = require('fs')
const path = require('path')
const xlsx = require('node-xlsx')

const titles = ['地点名称', '详细地址', '联系电话', '经纬度', '标签']
const result = []

const filenames = fs.readdirSync(__dirname, { encoding: 'utf-8' })
for (const filename of filenames) {
  if (filename.endsWith('.json')) {
    const data = []
    const filePath = path.resolve(__dirname, filename)
    const content = JSON.parse(fs.readFileSync(filePath, { encoding: 'utf-8' }))
    data.push(titles)
    for (const {
      name,
      address,
      tel,
      location: { lng, lat },
      tag
    } of content) {
      const element = []
      element.push(name)
      element.push(address)
      element.push(tel)
      element.push(`${lng},${lat}`)
      element.push(tag)
      data.push(element)
    }
    result.push({ name: filename, data})
  }
}

const buffer = xlsx.build(result, {
  '!cols': [{ wch: 20 }, { wch: 50 }, { wch: 15 }, { wch: 20 }, { wch: 20 }]
})
fs.writeFileSync(`./最终表格.xlsx`, buffer, { flag: 'w' })
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容