nodeJs以xls或xlsx導出所需制定根目錄的所有文件信息

node要以xls或xlsx導出,這裏用到的插件爲'excel-export',不需要express或koa的框架直接由命令行運行程序即可導出文件到制定位置

首先介紹下實例的目錄結構

node_modules   - 這個就不用多說了,安裝插件時候生成的node模塊依賴都在這裏邊

temp                    爲我實例代碼中生成xls文件存放的位置

package-lock.js和package.js 爲node初始化生成,npm init -y

readDirInfo.js      爲實例代碼


下邊爲實現步驟

首先 

// 初始化node,生成 package.js和package-lock.js(若沒有package-lock.js也沒事)
npm init -y
// 安裝node所需插件, 安裝完成會生成node_modules 
npm install --save excel-export

然後

所需環境安裝完成後,建立temp文件,也可在其他地方,只要將輸出的位置寫正確就可以;接下來就是重要環節編寫導出代碼

readDirInfo.js 代碼

const fs = require('fs')
const path = require('path')
const excelExport = require('excel-export')
// 所需要文件信息的根目錄(這個爲你所需輸入信息位置的目錄)
const rootPath = path.resolve(__dirname, '/Users/shenzhipeng/Desktop/workspace/mbs5-vue/mbs5-vue/01.src/web')
// 要生存的表明(這個爲輸出xls的名字和格式)
const excelName = 'vue模塊-checklist.xlsx'

// 最後獲取文件信息的list
let filesArr = []
// 遞歸獲取文件夾下的所有文件並對文件進行過濾判斷
const readFiles = (dirPath) => {
  let files = fs.readdirSync(dirPath)
  // 遍歷files
  files.forEach(e => {
    // 當前path
    let thisPath = path.join(dirPath, e)
    let stat = fs.statSync(thisPath)
    // 判斷當前是目錄或文件
    if (stat.isDirectory()) {
      // 目錄 - 重新調取
      readFiles(thisPath)
    } else if (stat.isFile()) {
      // 文件
      filesArr.push(thisPath)
    }
  })
}
// 導出爲excel
const exportExcelFun = (data) => {
  // 定義表頭
  let conf = {}
  conf.cols = [
    { caption: '名稱', type: 'number' },
    { caption: '簡介', type: 'string' }
  ]
  // 生成表格的列數
  let array = []
  data.forEach((e, i) => {
    array.push([i + 1, e])
  })
  // 表格內容
  conf.rows = array
  // 生成表格
  let createExcel = excelExport.execute(conf)
  // 這個爲導出文件的位置
  let createPath = path.resolve(__dirname, './temp/xls/' + excelName)
  fs.exists(createPath, (exists) => {
    if (exists) {
      // 存在 - 刪除
      fs.unlinkSync(createPath)
    }
    //  定義表格存放位置
    fs.writeFile(createPath, createExcel, 'binary', (err) => {
      if (err) {
        console.log(err)
      } else {
        console.log(`導出表格 ${excelName} 成功`)
      }
    })
  })
}
// 獲取數據
readFiles(rootPath)
// 導出表格
exportExcelFun(filesArr)

需要注意

// 所需要文件信息的根目錄(這個爲你所需輸入信息位置的目錄)
const rootPath = path.resolve(__dirname, '/Users/shenzhipeng/Desktop/workspace/mbs5-vue/mbs5-vue/01.src/web')
// 要生存的表明(這個爲輸出xls的名字和格式)
const excelName = 'vue模塊-checklist.xlsx'
// 這個爲導出文件的位置
  let createPath = path.resolve(__dirname, './temp/xls/' + excelName)

這兩處位置要修改成自己電腦的位置

最後

子當前所在目錄,輸入運行命令即可導出,如

node readDirInfo.js

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章