angular框架表格自定义导出,ui组件库为【devExpress by devExtreme】导出插件为exceljs、file-saver

news2025/7/23 6:44:28

前言

  • 使用的ui组件库为devExtreme
  • 注意:如果你没有使用这个组件库,那后续的代码可能对你不适用!!!,因为devExtreme和exceljs是结合着来的

在这里插入图片描述
在这里插入图片描述

其地址如下:
devexpress
https://js.devexpress.com/

  • 导出使用的是ExcelJS

在这里插入图片描述
其地址如下:
exceljs
https://github.com/exceljs/exceljs/blob/master/README_zh.md

正文

安装exceljs

直接npm 或者yarn安装即可

引入到项目中

注意这里引入Workbook会报错,所以换了种引入方法引入exceljs.min.js,见下面代码
本项目版本

  • angular版本为8版本,
  • exceljs版本为^4.3.0,
  • devextreme版本为19.2.5",
  • “devextreme-angular”: “19.2.5”,
  • “file-saver”: “^2.0.5”,
  • “xlsx”: “^0.16.9”,
// import { Workbook } from 'exceljs';
import * as Excel from "exceljs/dist/exceljs.min.js";
import { saveAs } from 'file-saver';
import { exportDataGrid } from 'devextreme/exporter/exceljs/excelExporter';

引入好了之后 表格正常写 html 伪代码如下

<div class="data-grid-wrapper">
    <dx-data-grid #listInstance height="100%" id="gridContainer" [(dataSource)]="tableList" keyExpr="sowPigID"
        [columnAutoWidth]="true" [allowColumnReordering]="true" [showBorders]="true" [showRowLines]='true'
        [remoteOperations]="true" (onExporting)="onExporting($event)">
        <dxo-export [enabled]="true"></dxo-export>
        
        <dxi-column [fixed]="true" caption="xx号" dataField="sowEarNumber"></dxi-column>
        <dxi-column caption="xx状态" dataField="pigState"></dxi-column>
        
        <dxo-search-panel [visible]="false"></dxo-search-panel>
        <dxo-paging [pageIndex]="0" [enabled]="true" [pageSize]="20"></dxo-paging>
        <dxo-pager [allowedPageSizes]="[10, 15, 20, 50, 100]" infoText='当前为第{0}页 共{1}页 {2}条数据' [showInfo]="true"
            [showNavigationButtons]="true" [showPageSizeSelector]="true" [visible]="true">
        </dxo-pager>
    </dx-data-grid>
</div>

在html里有onExporting这个回调函数里写你的逻辑 具体配置项详见文档
伪代码如下,需要结合你自己的业务来

  /**
   * ExcelJs导出 配置项详见
   * https://github.com/exceljs/exceljs/blob/master/README_zh.md
   */
  onExporting(e) {
    const workbook = new Excel.Workbook();
    const worksheet = workbook.addWorksheet(this.row.PlanName);

    exportDataGrid({
      component: e.component,
      worksheet,
      topLeftCell: { row: 2, column: 1 },//用作导出起始位置的单元格。表格的位置 在下面第x行,第x列
      customizeCell: ({ gridCell, excelCell }) => {//表格内容,当前excel实例
        if (gridCell.rowType === 'data') {
          if (this.boarIdList.includes(gridCell.column.dataField)) {//动态列的id
            excelCell.value = parseInt(gridCell.value);

            //业务:xx值超过某个特定阈值后,用颜色高亮表示
            if ((parseInt(gridCell.value)) > (this.row.Threshold * 100)) {
              excelCell.font = {
                color: { argb: 'FFC0000' }, //一个包含 ARGB 值的对象
                bgColor: { argb: 'FF0000FF' }
              };
            }
            excelCell.alignment = { horizontal: 'left' };
          }
        }
      },
    }).then((cellRange) => {
      // header
      const headerRow = worksheet.getRow(1);// 获取一个行对象。如果尚不存在,则将返回一个新的空对象
      headerRow.height = 30;
      /**
       * 单元格合并函数(单元格的列号和行号都是从0开始计)
       * 按开始行,开始列,结束行,结束列合并(相当于 K10:M12)
        a 单元格的列号
        b 单元格的行号
        c 从单元格[a,b]起,向“右”合并的列数 注意c不是合并列的数量,而是列的下标数
        d 从单元格[a,b]起,向下合并到d行
       */
      worksheet.mergeCells(0, 0, 0, 10);

      headerRow.getCell(1).value = `温馨提示:日期为${this.row._DataDate},xxxxx伪代码xxxx自己业务`;
      headerRow.getCell(1).font = { name: '宋体', size: 11, 'color': { 'theme': 1 }, };
      headerRow.getCell(1).alignment = { horizontal: 'left', vertical: 'middle', };
    }).then(() => {
      workbook.xlsx.writeBuffer().then((buffer) => {
        saveAs(new Blob([buffer], { type: 'application/octet-stream' }), `${this.row.PlanName}.xlsx`);
      });
    });
    this.isLoadPanelVisible = false
    e.cancel = true;
  }

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

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

相关文章

一文速学-Pandas查询索引操作详解+实例代码展示

目录 前言 一、按列表索引查询 查询单值 1.at(单值查询-loc) 2.iat(单值查询-iloc) 3. loc(行/列名索引查询) 4. iloc(行/列索引查询) 二、按条件查询 单条件查询 多条件查询 嵌套筛选 总结 前言 关于一文速学Pandas系列已经将基础部分内容更完&#xff0c;基础部分的…

ASEMI高压MOS管ASE65R330参数,ASE65R330图片

编辑-Z ASEMI高压MOS管ASE65R330参数&#xff1a; 型号&#xff1a;ASE65R330 漏极-源极电压&#xff08;VDS&#xff09;&#xff1a;650V 栅源电压&#xff08;VGS&#xff09;&#xff1a;20V 漏极电流&#xff08;ID&#xff09;&#xff1a;12.5A 功耗&#xff08;P…

[数据结构]:03-栈(C语言实现)

目录 前言 已完成内容 单链表实现 01-开发环境 02-文件布局 03-代码 01-主函数 02-头文件 03-StackCommon.cpp 04-StackFunction.cpp 结语 前言 此专栏包含408考研数据结构全部内容&#xff0c;除其中使用到C引用外&#xff0c;全为C语言代码。使用C引用主要是为了简…

跨境卖家必看的沃尔玛Walmart商家入驻教程

沃尔玛Walmart作为作为全球连锁超市的鼻祖&#xff0c;有不可比拟的知名度。当沃尔玛从线下延伸到线上后&#xff0c;就成为一个自带IP与流量的线上平台&#xff0c;在全世界都拥有数量庞大的消费者群体。所以龙哥就结合自己注册Walmart的过程给大家详细讲解一下。 Walmart卖家…

365智能云打印怎么样?365小票无线订单打印机好用吗?

365智能云打印怎么样&#xff1f;365智能云打印是有赞官方首推的订单小票打印机&#xff0c;荣获2016年有赞最佳硬件服务商。可以实现远程云打印&#xff0c;无需连接电脑&#xff0c;只需通过GPRS流量或者WIFI即可连接&#xff0c;不受地理位置和距离限制。365小票无线订单打印…

1W+企业都在用的数字化管理秘籍,快收藏!

企业数字化&#xff0c;绕不开的话题。 随着国家相继出台各种举措助力中小企业数字化转型&#xff0c;积极推动产业数字化转型&#xff0c;培育数字经济新生态&#xff0c;企业想要谋生存&#xff0c;求发展&#xff0c;必然需要做好数字化转型和管理。 本篇文章想跟大家一起…

【STM32MP157应用编程】2.GPIO输入、输出、中断

目录 GPIO文件 指令操作GPIO 程序操作GPIO 程序说明 程序代码 2_GPIO_4.c 启动交叉编译工具 编译 拷贝到开发板 测试 GPIO文件 在/sys/class/gpio目录下&#xff0c;存放了GPIO的文件。 gpiochipX&#xff1a;当前SoC所包含的GPIO控制器&#xff0c;STM32MP157一共包…

新型开源C2框架:浩劫

研究人员发现了一次针对政府实体的新攻击&#xff0c;攻击者在此期间使用了一种名为浩劫&#xff08;Havoc &#xff09;的新型 C2 框架。 尽管 C2 框架广泛可用&#xff0c;但 Havoc 作为一种先进的后开发框架脱颖而出&#xff0c;可以躲避最新版本的 Windows 11 Defender。 …

一文带你快速初步了解云计算与大数据

目录 &#x1f50d;一、云计算基础 1、云计算的概念、特点、关键技术 2、云计算的分类 3、云计算的部署模式 4、云计算的服务模式&#xff1a;IaaS、PaaS、SaaS分别是什么&#xff0c;具体含义要清楚 5、物联网的概念 6、物联网和云计算、大数据的关系 7、了解云计算的…

Python-生成元组和字典

1.生成元组元组是元素按顺序组合后的产物&#xff0c;元组对象的类型是tuple型含有两个元素的元组成为数据对元组可以包含任意数量和任意类型的元素&#xff0c;其元素总数可以为0、1、2等&#xff0c;并且元素的先后顺序是由意义的。另外&#xff0c;元组中的元素类型没有必要…

open3d最大平面检测,平面分割

1.点云读入 读入文件&#xff08;配套点云下载链接&#xff09; # 读取点云 pcd o3d.io.read_point_cloud("point_cloud_00000.ply")配套点云颜色为白色&#xff0c;open3d的点云显示默认背景为白色&#xff0c;所以将点云颜色更改为黑色 pcd.colors o3d.utilit…

利用 OLE 对象漏洞的 HWP 恶意文件浮出水面

ASEC 分析人员发现了一个利用 OLE 对象的恶意 HWP 文件&#xff0c;尽管其使用了 2020 年就被识别的恶意 URL&#xff0c;但仍然使用了 Flash 漏洞&#xff08;CVE-2018-15982&#xff09;&#xff0c;需要用户谨慎对待。 打开 HWP 文件时会在 %TEMP%文件夹中生成如下文件。攻…

数据结构之基:从根儿上了解数据结构的特性

学好数据结构&#xff0c;就等于成功了一半。 程序是对现实的模拟&#xff0c;现实是由时间和空间组成的&#xff0c;高效的人都是用最少的时间、最少的空间来做最伟大的事&#xff0c;程序亦是如此。我们要选择最合理的算法和最合理的数据结构&#xff0c;来写最好的代码&…

MySQL进阶知识

1 存储引擎1.1 MySQL体系结构1.2 存储引擎简介存储引擎就是存储数据、建立索引、更新/查询数据等技术的实现方式。存储引擎是基于表的&#xff0c;而不是基于库的&#xff0c;同一个库的多个表可以采用不同的存储引擎&#xff0c;所以存储引擎也经常称为表类型。创建表时可以指…

Rocketmq源码(一)手把手本地调试

很久没有学习了&#xff0c;从前是因为太忙&#xff0c;现在是因为太懒。立个flag&#xff0c;一定要把rocketmq源码看完&#xff01;源码阅读从idea的环境搭建和debug开始&#xff5e; Idea搭建调试目录代码下载代码架构启动namesvr启动broker启动consumer启动producer代码下载…

深度学习训练营之yolov5 官方代码调用以及-requirements.txt下载当中遇到的问题

深度学习训练营之yolov5 官方代码调用原文链接内容总结环境介绍前置工作简单介绍yolov5下载源码yolov5的下载遇到问题问题解析问题处理创建虚拟环境下载当中遇到的问题代码运行视频检测参考内容原文链接 &#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客…

taobao.trades.sold.query( 根据收件人信息查询交易单号 )

&#xffe5;开放平台免费API必须用户授权聚石塔内调用 根据收件人信息查询交易单号。 公共参数 请求地址: HTTP地址 公共请求参数: 公共响应参数: 请求参数 请求示例 TaobaoClient client new DefaultTaobaoClient(url, appkey, secret); TradesSoldQueryRequest req new…

我用了33行纯CSS实现了下划线的交互动画效果

背景 最近看到了一个特别炫酷的网站上的一个小细节&#xff0c;下划线的动画。看下他的实现效果。 但是&#xff0c;假如我们左边并没有足够的空间存放一条不可见的下划线呢&#xff1f; 像这样。 思路与实现 我要把这个下划线也做成文章刚开始的动画。就不是太好借鉴上面的思…

Windows Server 2022 中文版、英文版下载 (updated Feb 2023)

Windows Server 2022 中文版、英文版下载 (updated Feb 2023) Windows Server 2022 正式版&#xff0c;2023 年 2 月更新 请访问原文链接&#xff1a;https://sysin.org/blog/windows-server-2022/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&a…

Spring Boot 调取Bartender使用教程

Spring Boot 调取Bartender使用教程.md 原文链接&#xff1a;小回博客 博主可帮忙配置bartender进行打印&#xff0c;另有完整Mes系统源码。业务清单 文章目录Spring Boot 调取Bartender使用教程.md[toc]一、复制解压压缩包JavaBarTenderPrint.zip到C盘根目录下&#xff1a;二…