首页 > 其他分享 >js导出excel

js导出excel

时间:2024-05-24 15:41:05浏览次数:29  
标签:const filterSubData excel propertyList 导出 js let worksheet selectedMasterRows

引用 ExcelJS

let masterGrid = $("#gridContainer").dxDataGrid("instance");
                
// Get the selected master rows
let selectedMasterRows = masterGrid.getSelectedRowsData();

if (selectedMasterRows.length == 0) {
    selectedMasterRows = masterGrid.option('dataSource');
}
//console.log(selectedMasterRows);

let filterSubData = [];

// Iterate over each selected master row
$.each(selectedMasterRows, function (index, masterRow) {
    let matchDetail = fullSubData.filter(obj => obj['Item'] === masterRow.Item);
    filterSubData.push(masterRow);
    filterSubData.push(...matchDetail);
});

//console.log(filterSubData);


const workbook = new ExcelJS.Workbook();

// Add a worksheet
const worksheet = workbook.addWorksheet('@ViewBag.Title');

let excelcols = [];

const propertyList = Object.keys(filterSubData[0]);

for (let i = 0; i < propertyList.length; i++) {

    excelcols.push(
        {
            header: propertyList[i],
            key: propertyList[i],
        }
    );

}

worksheet.columns = excelcols;
                
for (let i = 0; i < filterSubData.length; i++) {
    worksheet.addRow(filterSubData[i]);

    if (filterSubData[i].idx) {
        for (col of worksheet.columns) {
            const cell = worksheet.getCell(col.letter + (i + 2));
            cell.font = { bold: true }
            cell.fill = {
                type: 'pattern',
                pattern: 'solid',
                fgColor: { argb: 'D9FC04' }
            };
        }
    }
}

workbook.xlsx.writeBuffer().then((content) => {
    const link = document.createElement("a");
    const blobData = new Blob([content], {
        type: "application/vnd.ms-excel;charset=utf-8;"
    });
    link.download = '@ViewBag.Title' + moment().format('_YYYYMMDD_HHmmss') + '.xlsx';
    link.href = URL.createObjectURL(blobData);
    link.click();
});

标签:const,filterSubData,excel,propertyList,导出,js,let,worksheet,selectedMasterRows
From: https://www.cnblogs.com/duixue/p/18211085

相关文章

  • js函数柯里化
    JavaScript函数柯里化详解 更新时间:2022年01月14日15:33:47 作者:天界程序员  这篇文章主要为大家介绍了JavaScript函数柯里化,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助 −目录一、简单了解apply和call二、什么是函数柯里化?三、写......
  • office系列软件(word、ppt、excel)打不开的解决方案
    前言​ 这里我遇到的情况是点击都没反应,而不像很多人那样有报错弹窗,费劲千辛万苦才最终解决,中间一度自暴自弃想着干脆用WPS得了(大可不必),中间我尝试了三种方法,不一定哪种有效,权当分享;一、使用WindowsPowerShell(管理员)方式使用快捷键WIN+X打开菜单,并点击终端管理员选项......
  • 【Excel技巧】Excel如何把横排变成竖排?
    想要把excel表格中的横排变成竖排,这种应该如何操作?今天分享两个方法,一起来学习一下吧!方法一:选中表格,复制,选择一个位置,点击单元格在单元格粘贴,但是这里是点击右键,点击选择性粘贴,打开对话框               在对话框中,勾选上转置,点击确定之后我们就可以看......
  • nodejs安装及环境配置
    Node.js的安装及环境配置可以遵循以下步骤:一、Node.js的安装访问Node.js的官方网站(https://nodejs.org/en/),下载对应你操作系统的Node.js安装包。找到下载的安装包目录,双击进行安装。在安装过程中,接受用户协议,选择安装的位置(最好是英文路径,不要有空格)。选择安装项,一般选择......
  • Doris:数据导入导出
    数据导入导入(Load)功能就是将用户的原始数据导入到Doris中。导入成功后,用户即可通过Mysql客户端查询数据。为适配不同的数据导入需求,Doris系统提供了6种不同的导入方式(Broker、Stream、Insert、Multi、Routine、S3)。每种导入方式支持不同的数据源,存在不同的使用方式(异步,......
  • pandas读取大型Excel
    前言pandas版本低于2.x,engine参数不支持calamine,但是又想提升读取大型Excel的速度,那么还是可以用python-calamine库的#安装pipinstallpython-calamine示例1importpandasaspdfrompython_calamineimportCalamineWorkbookwb=CalamineWorkbook.from_path(filenam......
  • JS 监听用户页面访问&页面关闭并进行数据上报操作
    JS监听用户页面访问&页面关闭操作并进行数据上报前言最近在做安全方面的项目,有个需求是在用户访问页面和关闭页面的时候,发送对应的数据。刚拿到需求的时候,觉得没啥东西,init的时候发送一次,页面unload的时候发送一次就行了,很简单,后面开发了一下,又根据当前项目,发现没这么简单......
  • 前端实现导入,导出/纯前端实现将数据导出为excel,将excel数据导入传给后端
    一、下载插件(xlsx如果报错utils未定义就用下面这个版本)[email protected]@2.0.5二、页面中引入import*asXLSXfrom'xlsx';import{saveAs}from'file-saver'; 三、导入/导出表格内容1.导出exportExcel(){  ......
  • 基于three.js的Instanced Draw+LOD+Frustum Cull的改进实现
    大家好,本文在上文的基础上,优化了InstancedDraw+LOD+FrustumCull的性能,性能提升了3倍以上关键词:three.js、InstancedDraw、大场景、LOD、FrustumCull、优化、Web3D、WebGL、开源上文:three.js使用InstancedDraw+FrustumCull+LOD来渲染大场景(开源)相对于上文的改进点相对于......
  • html+css+js
    HTMLHTML标题代码效果HTML段落代码效果HTML超链接代码效果HTML图像代码效果HTML文本格式化代码效果HTML头部代码效果HTML表格代码效果HTML布局代码效果......