Node第三方包 【node-xlsx】

news2024/9/22 19:31:09

文章目录

  • 🌟前言
  • 🌟node-xlsx
  • 🌟安装
  • 🌟导出xlsx文件
  • 🌟解析xlsx文件
    • 🌟另外:其他支持读写Excel的Node.js模块有:
    • 🌟直接导出excel文件
  • 🌟写在最后

在这里插入图片描述

🌟前言

哈喽小伙伴们,新的专栏 Node 已开启;这个专栏里边会收录一些Node的基础知识和项目实战;今天我们带领大家初识一下 Node第三方包 node-xlsx ;让我们一起来看看吧🤘

🌟node-xlsx

node-xlsx => npm地址

简单的 excel 文件解析器和生成器。

  • 依靠SheetJS xlsx模块来解析/构建 excel 工作表。
  • 使用TypeScript构建,用于对库中导出的类型进行静态类型检查。

🌟安装

npm install node-xlsx --save
import xlsx from 'node-xlsx';
var xlsx = require('node-xlsx').default;

🌟导出xlsx文件

var xlsx = require('node-xlsx').default;
var fs = require("fs");
var data =  [
    ['未激活','信息部','testname','123@qq.com','2019-11-09','管理员'],
    ['未激活','信息部','testname2','12345@qq.com','2019-11-09','普通成员']
];
var buffer = xlsx.build([{name:'test',data:data}])
fs.writeFileSync('./1.xlsx',buffer)
var xlsx = require('node-xlsx').default;
var fs = require("fs");

var arr= [
    {name:"张三",age:19},
    {name:"李四",age:18}
]
//将 arr中的对象处理为数组
var data = arr.map(function(index, elem) {
    console.log(index)
    return Object.values(index);
})
//获取表头,添加到数组中第一个
data.unshift(Object.keys(arr[0]))

var buffer = xlsx.build([{name:'test',data:data}])
fs.writeFileSync('./2.xlsx',buffer)

🌟解析xlsx文件

var xlsx = require('node-xlsx').default;
var fs = require("fs");

var data = xlsx.parse('./2.xlsx');
console.log(data[0].data)

🌟另外:其他支持读写Excel的Node.js模块有:

  • node-xlsx: 可读写excel文件,仅支持xlsx格式文件;
  • excel-parser: 仅可读excel文件,支持xls及xlsx格式文件;
  • excel-export: 仅可导出excel文件,生成文件格式为xlsx;
  • node-xlrd: 仅可读excel文件,仅支持xls格式文件;

🌟直接导出excel文件

var data = []
var table = `
        <table border='1' cellspacing='0'>
  <tr>  
     <td>学校</td>
     <td>陕西理工大学</td>
     <td>实践项目名称</td>
     <td>${data['activity_theme']}</td>
     <td>实践开展时间</td>
     <td>从${data['activity_start_time']}${data['activity_end_time']}</td>
     <td>授课教师</td>
     <td>${data['teacher']}</td>
  </tr>
  <tr>
      <td rowspan='2'>评价主体</td>
     <td colspan='6'>${data['name']}</td>
  </tr>
  <tr>
      <td colspan='2'>评价项目</td>
      <td colspan='3'> 评价指标及赋值标准</td>
      <td colspan='3'> 评价得分 (满分100) </td>
  </tr>
  <tr>
    <td rowspan='4' colspan='2'>实践教学准备</td>
    <td colspan='3'>教学设计思想10分</td>
    <td colspan='3'>${score['a']}</td>
  </tr>
  <tr>
        <td colspan='3'>教学资源建设5分</td>
        <td colspan='3'>${score['b']}</td>
  </tr>
  <tr>
    <td colspan='3'>教学目标制定10分</td>
    <td colspan='3'>${score['c']}</td>
  </tr>
  <tr>
    <td colspan='3'>活动情景营造5分</td>
    <td colspan='3'>${score['d']}</td>
   </tr>
   <tr>
    <td rowspan='5' colspan='2'>实践教学过程</td>
    <td colspan='3'>活动方法指导10分</td>
    <td colspan='3'>${score['e']}</td>
  </tr>
  <tr>
        <td colspan='3'>活动资源使用10分</td>
        <td colspan='3'>${score['f']}</td>
  </tr>
  <tr>
    <td colspan='3'>师生互动交流10分</td>
    <td colspan='3'>${score['g']}</td>
  </tr>
  <tr>
    <td colspan='3'>学生情绪状态5分</td>
    <td colspan='3'>${score['h']}</td>
   </tr>
   <tr>
    <td colspan='3'>学生思维状态5分</td>
    <td colspan='3'>${score['i']}</td>
   </tr>

   <tr>
    <td rowspan='4' colspan='2'>实践教学效果</td>
    <td colspan='3'>认知生成状态10分</td>
    <td colspan='3'>${score['j']}</td>
  </tr>
  <tr>
        <td colspan='3'>能力提升状态10分</td>
        <td colspan='3'>${score['k']}</td>
  </tr>
  <tr>
    <td colspan='3'>态度与价值观10分</td>
    <td colspan='3'>${score['l']}</td>
   </tr>
   <tr>
    <td colspan='2'>综合评价</td>
    <td colspan='6'>${data['totalscore']}</td>
   </tr>
   <tr>
  <td colspan='6'>
   ${data['evaluate']}
</td>
</tr>
</table>`;
ctx.set('Pragma', 'public');
ctx.set('Expires', 0);
ctx.set('Cache-Control', 'must-revalidate, post-check=0, pre-check=0');
ctx.set('Content-Type', 'application/force-download;application/vnd.ms-execl;application/octet-stream;application/download');
ctx.set('Content-Disposition', 'attachment;filename="老师学生评价活动评价表.xlsx"');
ctx.set('Content-Transfer-Encoding', 'binary');

ctx.body = table;

🌟写在最后

更多Node知识以及API请大家持续关注,尽请期待。各位小伙伴让我们 let’s be prepared at all times!

✨原创不易,还希望各位大佬支持一下!
👍 点赞,你的认可是我创作的动力!
⭐️ 收藏,你的青睐是我努力的方向!
✏️ 评论,你的意见是我进步的财富!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/465155.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

麒麟信安联合主办 | openEuler Developer Day 2023召开 openEuler全场景走向深入

【中国&#xff0c;上海&#xff0c;2023年4月21日】openEuler Developer Day 2023于4月20-21日在线上和线下同步举办。本次大会由开放原子开源基金会、中国软件行业协会、openEuler社区、边缘计算产业联盟共同主办&#xff0c;以“万涓汇流&#xff0c;奔涌向前”为主题&#…

【FTP工具】- Win10下免费的FTP服务器搭建 - FileZilla 的下载、安装、使用

目录 一、概述二、下载、安装2.1 下载2.2 安装 三、FileZilla服务器的使用3.1 连接服务器3.2 配置用户权限 四、在windows访问该Ftp服务器4.1 查看Ftp服务器IP4.2 访问Ftp服务器 一、概述 FileZilla服务器是一个免费的开源FTP和FTPS服务器&#xff0c;是根据GNU通用公共许可证条…

HTB靶机03-Shocker-WP

Shocker scan 2023-03-30 23:22 ┌──(xavier㉿xavier)-[~/Desktop/Inbox] └─$ sudo nmap -sSV -T4 -F 10.10.10.56 Starting Nmap 7.91 ( https://nmap.org ) at 2023-03-30 23:22 HKT Nmap scan report for 10.10.10.56 Host is up (0.40s latency). Not shown: 99 clos…

QT-day(2)-(常用类、信号与槽.....)

题目&#xff1a;编写一个登录功能的界面&#xff0c;在登录框项目中&#xff0c;将登陆按钮发射的tclicked信号&#xff0c;连接到自定义的槽函数中&#xff0c;在槽函数中&#xff0c;判断u界面输入的用户名是否为"admin ,密码是否为"123456如果验证成功&#xff0…

数据结构_时间复杂度/空间复杂度

目录 1. 数据结构在学什么 2. 数据结构的基本概念 3. 算法和算法评价 3.1 算法的基本概念 3.2 算法的特征 3.3 算法效率的度量 3.3.1 时间复杂度 3.3.2 空间复杂度 1. 数据结构在学什么 常言道&#xff1a;学以致用&#xff1b;学习完基本C语言程序&#xff0c;我们希…

AB数对 码蹄集

题目来源&#xff1a;码蹄集 题目描述&#xff1a; 大致思路&#xff1a; 遍历输入的n个整数&#xff0c;将每个数存入哈希表中&#xff0c;key为数值&#xff0c;value为该数出现的次数。 再次遍历这n个整数&#xff0c;对于每个数x&#xff0c;计算出x-C和xC的值&#xff0…

Go语言基础----Go语言简介

【原文链接】Go语言基础----Go语言简介 一、Go语言简介 Go语言&#xff0c;又称Golang&#xff0c;是Google公司的Robert Griesemer&#xff0c;Rob Pike 及 Ken Thompson开发的一种静态强类型、编译型的语言。Go语言语法和C语言接近&#xff0c;但是功能上内存安全&#xff…

【Python】lambda匿名函数

文章目录 前言lambda匿名函数的定义lambda匿名函数的使用使用lambda匿名函数写一个计算器总结 前言 在Python中,可以使用def 关键字定义函数,使用def定义的关键字是有名称的,在调用时可以重复使用.还有一种是使用lambda关键字进行函数的定义,这个方式定义的函数是匿名函数,只能…

51单片机(四)静态数码管和动态数码管显示

❤️ 专栏简介&#xff1a;本专栏记录了从零学习单片机的过程&#xff0c;其中包括51单片机和STM32单片机两部分&#xff1b;建议先学习51单片机&#xff0c;其是STM32等高级单片机的基础&#xff1b;这样再学习STM32时才能融会贯通。 ☀️ 专栏适用人群 &#xff1a;适用于想要…

内存优化-比glibc更快的tcmalloc

TCMalloc 是 Google 开发的内存分配器&#xff0c;在不少项目中都有使用&#xff0c;例如在 Golang 中就使用了类似的算法进行内存分配。它具有现代化内存分配器的基本特征&#xff1a;对抗内存碎片、在多核处理器能够 scale。据称&#xff0c;它的内存分配速度是 glibc2.3 中实…

3d网上渲染平台是怎么渲图的_云渲染流程详解!

题主说的看到许多网友对‘’3d网上渲染平台是怎么渲图的‘’进行提问&#xff0c;瑞云渲染小编也提供自己的小小见解。针对3D网上渲染平台是指什么&#xff0c;实际应该是指云渲染农场。几十年来&#xff0c;随着计算机软硬件不断更迭&#xff0c;图形图像渲染的效果更加清晰、…

信号完整性分析基础知识之传输线和反射(二):阻性负载的反射,源端阻抗,弹跳图

传输线的端接需要考虑三种重要的特殊情况&#xff0c;每种情况中&#xff0c;传输线的特性阻抗均为50Ohm。信号将从源端在这条传输线上传播&#xff0c;并以特定的阻抗端接到达远端。 TIP:在时域中&#xff0c;信号对瞬时阻抗十分敏感&#xff0c;第二区域并不一定是一条传输线…

常见的链表的OJ题

在本次的博客当中&#xff0c;为了巩固关于链表技能的运用&#xff0c;我们先来看一些与链表有关的OJ题。 &#x1f335;反转链表 题目详情如下&#xff1a; 第一道题目从逻辑上看不难&#xff0c;我们只需要将链表进行拆分&#xff0c;将我们下一个节点进行一个类似于头插的操…

【Java 数据结构】Map和Set

&#x1f389;&#x1f389;&#x1f389;点进来你就是我的人了 博主主页&#xff1a;&#x1f648;&#x1f648;&#x1f648;戳一戳,欢迎大佬指点!人生格言&#xff1a;当你的才华撑不起你的野心的时候,你就应该静下心来学习! 欢迎志同道合的朋友一起加油喔&#x1f9be;&am…

35岁程序员被裁赔偿27万,公司又涨薪让我回去,前提是退还补偿金,能回吗?

在大多数人眼里&#xff0c;35岁似乎都是一道槛&#xff0c;互联网界一直都有着“程序员是吃青春饭”的说法&#xff0c;。 如果在35岁的时候被裁能获得27万的赔偿&#xff0c;公司又涨薪请你回去上班&#xff0c;你会怎么选&#xff1f; 最近&#xff0c;就有一位朋友在网上…

Linux安装miniconda3

下载Miniconda&#xff08;Python3版本&#xff09; 下载地址&#xff1a;https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh 安装Miniconda&#xff08;需要连网&#xff09; &#xff08;1&#xff09;将Miniconda3-latest-Linux-x86_64.sh上传到/o…

研读Rust圣经解析——Rust learn-14(面向对象)

研读Rust圣经解析——Rust learn-14&#xff08;面向对象&#xff09; Rust面向对象对象包含数据和行为封装继承多态 实现面向对象书写最外层逻辑userServiceUser Rust面向对象 在一些定义下&#xff0c;Rust 是面向对象的&#xff1b;在其他定义下&#xff0c;Rust 不是 对象…

算法刷题|300.最长递增子序列、674.最长连续递增序列、718.最长重复子数组

最大递增子序列 题目&#xff1a;给你一个整数数组 nums &#xff0c;找到其中最长严格递增子序列的长度。 子序列 是由数组派生而来的序列&#xff0c;删除&#xff08;或不删除&#xff09;数组中的元素而不改变其余元素的顺序。例如&#xff0c;[3,6,2,7] 是数组 [0,3,1,6…

c++文件操作Ofstream、Ifstream,如何获取文件长度

一、文件光标定位streampos 在读写文件时&#xff0c;有时希望直接跳到文件中的某处开始读写&#xff0c;这就需要先将文件的读写指针指向该处&#xff0c;然后再进行读写。 ifstream 类和 fstream 类有 seekg 成员函数&#xff0c;可以设置文件读指针的位置&#xff1b;ofstr…

OpenGL光照:颜色

知识点归纳 现实世界中有无数种颜色&#xff0c;每一个物体都有它们自己的颜色。我们要做的工作是使用(有限的)数字来模拟真实世界中(无限)的颜色&#xff0c;因此并不是所有的现实世界中的颜色都可以用数字来表示。然而我们依然可以用数字来代表许多种颜色&#xff0c;并且你甚…