资讯专栏INFORMATION COLUMN

基于Node.js和node-xlsx开发一个Excel组件

wangbinke / 3148人阅读

摘要:写入新的文件完成合并完整代码文件夹路径把要合并的文件放在文件夹内提交成绩开始合并表格内部字段不一致,请检查后再合并。

简述需求 我们在用Excel表格的时候经常需要合并数据,比如统计整个年级的数据的时候,需要合并每个班成绩的时候,这就需要一个快速将很多张数据类型相同表合并的组件

需要的配置

现在Node.js能够很好进行文件的读写操作,只要能读写就能合并

社区已经有了封装好的一些插件比如node-xlsx,cnpm install就能用

引入Node本来的文件读写工具

const xlsx = require("node-xlsx")
const fs = require("fs")
获取文件决定路径,定义合并数组

我们将文件放到excle里,而合并的结果放到result里

const _file = `${__dirname}/excel/`
const _output = `${__dirname}/result/`
let dataList = [
    {
        name: "提交成绩",//你sheet的名字
        data: []
    }]
读出数据 fs.readdir(_file, function(err, files) {}里可以将所有_file读出来放到files数组里


解析数据
let excelData = xlsx.parse(`${_file}${item}`)//拼接的绝对路径
console.log(excelData)
console.log(excelData[0].data)


提取数据进行拼接
files.forEach((item, index) => {
            try {
                console.log(`开始合并:${item}`)
                let excelData = xlsx.parse(`${_file}${item}`)
            if (excelData) {
                    if (dataList[0].data.length > 0) {
                        excelData[0].data.splice(0, 1)
   
                    }
                    dataList[0].data = dataList[0].data.concat(excelData[0].data)
                }
            } catch (e) {
                console.log("excel表格内部字段不一致,请检查后再合并。")
            }
        })
写入新的文件
        var buffer = xlsx.build(dataList)
        fs.writeFile(`${_output}resut.${new Date().getTime()}.xlsx`, buffer, function (err) {
            if (err) {
                throw err
            }
            console.log("x1B[33m%sx1b[0m", `完成合并:${_output}resut.${new Date().getTime()}.xlsx`)
        })

完整代码
const xlsx = require("node-xlsx")
const fs = require("fs")
// excel文件夹路径(把要合并的文件放在excel文件夹内)
const _file = `${__dirname}/excel/`
const _output = `${__dirname}/result/`
let dataList = [
    {
        name: "提交成绩",
        data: []
    }]

init()
function init () {
    fs.readdir(_file, function(err, files) {
        console.log(files)
        if (err) {
            throw err
        }
        files.forEach((item, index) => {
            try {
                console.log(`开始合并:${item}`)
                let excelData = xlsx.parse(`${_file}${item}`)
            if (excelData) {
                    if (dataList[0].data.length > 0) {
                        excelData[0].data.splice(0, 1)
                    }
             
                    dataList[0].data = dataList[0].data.concat(excelData[0].data)
                }
            } catch (e) {
                console.log("excel表格内部字段不一致,请检查后再合并。")
            }
        })
        var buffer = xlsx.build(dataList)
        fs.writeFile(`${_output}resut.${new Date().getTime()}.xlsx`, buffer, function (err) {
            if (err) {
                throw err
            }
            console.log("x1B[33m%sx1b[0m", `完成合并:${_output}resut.${new Date().getTime()}.xlsx`)
        })
    })
}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/105205.html

相关文章

  • nodejs读写excel内容

    摘要:支持读写的模块基于解析文件数据及生成文件,仅支持格式文件基于解析文件数据,支持及格式文件基于将数据生成导出文件,生成文件格式为基于从文件中提取数据,仅支持格式文件。代码如下读取文件内容将文件内容插入新的文件中 支持读写Excel的node.js模块node-xlsx: 基于Node.js解析excel文件数据及生成excel文件,仅支持xlsx格式文件;excel-parser: 基于...

    yzzz 评论0 收藏0
  • iMap | 一款基于 Electron Vue 的跨平台旅行地图生成器

    摘要:请求错误请求代码封装与基本一致,只是将换成即可。关于的使用是个能把组件的共享状态抽取出来,当做一个全局单例模式进行管理。首先确保你的已经安装,运行来安装。 项目地址:https://huangxizhou.com/project/iMap 技术栈 Vue.js Vuex Axios Webpack Leancloud(express) Echarts Electron(electr...

    dingda 评论0 收藏0
  • node爬取拉勾网数据并导出为excel文件

    摘要:前言之前断断续续学习了,今天就拿拉勾网练练手,顺便通过数据了解了解最近的招聘行情哈方面算是萌新一个吧,希望可以和大家共同学习和进步。 前言 之前断断续续学习了node.js,今天就拿拉勾网练练手,顺便通过数据了解了解最近的招聘行情哈!node方面算是萌新一个吧,希望可以和大家共同学习和进步。 一、概要 我们首先需要明确具体的需求: 可以通过node index 城市 职位来爬取相关信...

    dkzwm 评论0 收藏0
  • 基于koajs一个简易Excel生成服务

    摘要:起因运营人员需要将后台的表格导出成,由于后端的同学忙于其他事情,想着是不是可以自己做一个服务来生成。另外再搭配就可以提供一个允许跨域请求的服务。这样一个简单的接口就写完了,只要调用传入和就可以生成文档。 起因 运营人员需要将后台的表格导出成Excel,由于后端的同学忙于其他事情,想着是不是可以自己做一个服务来生成。了解到有node-xlsx这样的工具以后就开工了。 框架 后台选用了ko...

    qylost 评论0 收藏0
  • nodejs使用node-xlsx生成excel

    摘要:使用中库进行的生成操作近日,应领导要求,从网上抓了一大批数据存入了数据库,可是妈妈批,市场妹子要的是表格啊,毕竟妹子的话还是要听的关键人家语气蛮好的,就从网上查一些资料。 ## 使用nodejs中node-xlsx库进行excel的生成操作 ## 近日,应领导要求,从网上抓了一大批数据存入了数据库,可是妈妈批 ,市场妹子要的是excel表格啊,毕竟妹子的话还是要听的(关键人家语气蛮好的...

    zr_hebo 评论0 收藏0

发表评论

0条评论

wangbinke

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<