excel创建和部分使用

news/2024/7/21 5:26:42 标签: excel

一.excel导出是在开发中经常操作的内容,对于excel的导出也是有各种成熟的api组件

这里是最近的项目有通过ts处理,这里的内容通过ts

①引入const XlsxPopulate = require("xlsx-populate"); const XLSXChart = require("xlsx-chart");

通过命令行操作, pnpm xlsx-populate xlsx-chart

②对于excel的说明更有利于对构建excel的理解

1.整个单独的excel即为一个工作簿(workBook)

2.一个工作簿里面可以有很多工作表(sheet)

3.每个工作表有工作表的名称sheetName

4.每个工作表有头(header),体(body)存储数据

5.每列开始从a开始到之后都有唯一的.这里不多可以使用A1:${ 97+ header.lenth-1}.length(head.length)

二.上面说完之后就应该有熟悉的认识

XlsxPopulate.fromFileAsync(pathInfo.filePath)
      .then(async (workbook) => {
//导出路径格式
        const filePath = `./${
          pathInfo.folderName
        }/TicketsReport_${moment().unix()}.xlsx`;
//工作表名
        const newSheetName = "ReportData";
        const newSheet = workbook.addSheet(newSheetName);
//头部
        const header = [
          "Brand",
          "Branch code",
          "Branch name(TC)",
        ];
//体 数据存储位置 这里范围从A1开始后面的为获取具体的ASCll码
        const range = workbook
          .sheet(newSheetName)
          .range(
            `A1:${String.fromCharCode(97 + header.length - 1).toUpperCase()}header.length`
          );

        range.value([
          header,
          ...reportData.map((data) => [
            data.brandName,
            data.branchCode,
            data.branchName,
          ]),
        ]);

        // 写文件输出
        await workbook.toFileAsync(filePath);
})
      .catch((error) => {
        Logger.error(`Something went wrong - ${error?.message ?? JSON.stringify(error)}`, 'excel')
      });

___________________________________________________________________________

第二部分:

一.对于要将结果变.csv格式的纯文本格式的这种内容就简单很多了,

这个部分只是文字,只是header和body部分需要写上,之后加上换行符"/n"就可以

 const header = [

        "id",

        "token",]

let body= "";
      csvContent.forEach((ticket) => {
        let rowData = '';
        header.forEach((key)=>{
          let value='';
          value =  ticket[key]??' ';
          rowData += value + ",";
        });
        rowData= rowData.slice(0, -1) + "\n";
        body+= rowData;
      });

const headerString = header.join(",") + "\n";

const data= headerString+body

这里将内容转换成需要的内容之后,拼接起来,之后通过fs将结果导出即可

await fs.promises.writeFile(filePath,data,'utf-8');


http://www.niftyadmin.cn/n/5453062.html

相关文章

AXI-Stream——草稿版

参考自哔站:FPGA IP之AXI4-Lite AXI4-Stream_哔哩哔哩_bilibili 信号 传输层级从小到大 包(----------transfer--transfer--------)------delay--------包(----------transfer--transfer--------) TKEEP和TSTRB共同决定了是哪种数据流

在这个平台招聘,太爽了吧!

前言 我之前也做过两年面试官,参与过一些电话面试和现场的技术面试。 经常花了很多时间和精力去面试,结果却招不到合适的人选。 这种传统的招聘模式,效率非常低,有可能会浪费招聘者和应聘者大量的时间。 那么,问题…

Springboot 构建异步TaskManager的优雅处理线程任务

首先定义一个TaskManager管理类 import lombok.extern.slf4j.Slf4j;import java.util.concurrent.BlockingQueue; import java.util.concurrent.Executors; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.ThreadPoolExecutor;Slf4j public cl…

1.7.1 python 作业

1、求出1 / 1 1 / 3 1 / 5……1 / 99的和 (1分之一1分之三1分支5....) sum0 for i in range(1,100,2): sum 1/i sum; print(sum) 2、用循环语句,计算2 - 10之间整数的循环相乘的值 (2*3*4*5....10) sum 1 for i in range(2,11): sum sum *…

信号处理--基于混合CNN和transfomer自注意力的多通道脑电信号的情绪分类的简单应用

目录 关于 工具 数据集 数据集简述 方法实现 数据读取 ​编辑数据预处理 传统机器学习模型(逻辑回归,支持向量机,随机森林) 多层感知机模型 CNNtransfomer模型 代码获取 关于 本实验利用结合了卷积神经网络 (CNN) 和 Transformer 组件的混合…

蓝桥杯练习系统(算法训练)ALGO-966 自行车停放

资源限制 内存限制:256.0MB C/C时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s 问题描述 有n辆自行车依次来到停车棚,除了第一辆自行车外,每辆自行车都会恰好停放在已经在停车棚里的某辆自行…

【Linux】-Linux下的编辑器Vim的模式命令大全及其自主配置方法

目录 1.简单了解vim 2.vim的模式 2.1命令模式 2.2插入模式 2.3底行模式 3.vim各模式下的命令集 3.1正常(命令模式下) 3.1.1光标定位命令 3.1.2 复制粘贴 3.1.3 删除 3.1.4 撤销 3.1.5大小写转换 3.1.6替换 「R」:替换光标所到之处的字符&…

VUE3.0(一):模板语法及指令介绍

模板语法 Vue 使用了基于 HTML 的模板语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。 Vue 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。 结合响应系统,在应用状态改变时, Vue 能够智能地计算出…