目录
功能按钮不导出
跨行表格
资格证出现空列
首页 web前端 js教程 AngularJS导出Excel指令

AngularJS导出Excel指令

Jul 09, 2018 pm 04:06 PM
angular.js directive excel

这篇文章主要介绍了关于AngularJS导出Excel指令,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

Excel导出思路

参考文章 - angularjs使用指令实现table导出csv

项目中使用到了导出Excel功能,潘老师已经在博客中将表格导出为csv的技术难点实现,剩下的,只是根据实际的业务需求对该指令进行完善。

大体遇到了以下几个问题:

功能按钮不导出

735522559-5b124e0faa2be_articlex[1].png

因为原指令默认导出表格所有的内容,第一次直接导出时,发现直接将查看、编辑这几个按钮的HTML代码都导出去了,我们要的应该是人员信息和人员资质信息。

指令添加参数:有效数据列数。

如图,这里的有效数据列就是市、区县等等一直到有效期至,一共15列,作为参数传给导出指令。

self.exportCols = scope.exportCols;

for (let i = 0; i < table.rows.length; i ++) {
    // 获取每行的数据
    var rowData = table.rows[i].cells;
    // 如果该列为正常列,循环内容
    for (let j = 0; j < self.exportCols; j ++) {
        // 如果该列不存在,则赋值为空内容
        var data = rowData[j] === undefined ? &#39;&#39; : rowData[j].innerHTML;
        // 拼接内容,用逗号分隔
        csvString = csvString + data + ",";
    }
    // 删除最后多余的逗号
    csvString = csvString.substring(0, csvString.length - 1);
    // 每行末尾添加\n进行换行
    csvString = csvString + "\n";
}
登录后复制

原来内层循环的是所有数据列,现在改成传入的有效数据列数。

跨行表格

3727967877-5b1250e16c527_articlex[1].png

以这个图为例,第一行是有15列的,但是第二行的数据只有4列,因为其余的列是第一行设置rowspan显示的,实际上第二行的tr中只有人员资质4td

1868072425-5b12530041bbf_articlex[1].png

这就导致导出的时候第二行只有四个数据,并且是从左对齐的,所以我们需要在跨行的列添加空数据。

加一个条件判断,传入出现被跨行的列时剩余列的长度,用于区分是正常列还是被跨行的列。

if (self.isNormalItem(rowData)) {
    // 如果该列为正常列,循环内容
    for (let j = 0; j < self.exportCols; j++) {
        // 如果该列不存在,则赋值为空内容
        var data = rowData[j] === undefined ? &#39;&#39; : rowData[j].innerHTML;
        // 拼接内容,用逗号分隔
        csvString = csvString + data + ",";
    }
} else {
    // 根据有效数据中的跨行列拼接空数据
    for (let j = 0; j < self.multipleRowCols; j ++) {
        csvString = csvString + ",";
    }
    // 根据有效数据减去跨行列,获得非跨行列,并拼接数据
    for (let index = 0; index < self.exportCols - self.multipleRowCols; index ++) {
        csvString = csvString + rowData[index].innerHTML + ",";
    }
}
登录后复制

资格证出现空列

747691150-5b125672e6cac_articlex[1].png

因为这里需要为添加资格证按钮添加一个空列,导出的时候也会出现空列,效果并不好。

2679883153-5b1258f8bacad_articlex[1].png

所以需要进行判断,当出现被跨行的列时,需要判断它的上一行的最后四项内容是否为空,如果为空,就应该把这个列的内容放到上一行。

if (self.isNormalItem(rowData)) {
    // 如果该列为正常列,循环内容
    ...
} else if (self.isFirstItem(csvString)) {
    // 如果当前跨行资质是当前人员的第一个资质,则将该资质添加到上一行
    // 因为能添加人员资质的界面第一行的人员资质是空的,所以需要将该资
    // 质添加到上一行
    csvString = self.addDataToPreString(rowData, csvString);
} else {
    // 根据有效数据中的跨行列拼接空数据
    ...
}
登录后复制

再加一个else,如果当前被跨行的列是当前人员的第一个人员资质的话,就把这一行的人员资质数据添加到上一行人员资质的空白处。

下面是方法的具体实现:

// 判断当前表格中资质是否是第一项资质
self.isFirstItem = function(string) {
    // 分隔字符串
    var csvArray = string.split(&#39;,&#39;);
    // 循环已有字符数组的倒数四个元素,判断是否有效
    for (var i = csvArray.length - 1; i >= csvArray.length - 4; i--) {
        if (self.isValid(csvArray[i])) {
            return false;
        }
    }
    return true;
};
// 判断当前字符是否有效
// 空字符和\n视为无效
self.isValid = function(char) {
    if (char === '' || char === '\n') {
        return false;
    } else {
        return true;
    }
};
// 添加数据到字符串的上一行
self.addDataToPreString = function(data, string) {
    // 字符串分隔为数据
    var csvArray = string.split(',');
    // 循环,将有效的数据添加到上一行
    for (let i = 0; i < self.validNoMultipleRowCols; i++) {
        csvArray[csvArray.length - self.validNoMultipleRowCols + i] = data[i].innerHTML;
    }
    // 数组转换为字符串
    return csvArray.join(',');
};
登录后复制

最终实现导出的csv效果:

2341140852-5b125d6ebff00_articlex[1].png

以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!

相关推荐:

AngularJS 文档阅读的指令scope

以上是AngularJS导出Excel指令的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
威尔R.E.P.O.有交叉游戏吗?
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

excel打印表格框线消失怎么办 excel打印表格框线消失怎么办 Mar 21, 2024 am 09:50 AM

如果在打开一份需要打印的文件时,在打印预览里我们会发现表格框线不知为什么消失不见了,遇到这样的情况,我们就要及时进行处理,如果你的打印文件里也出现了此类的问题,那么就和小编一起来学习下边的课程吧:excel打印表格框线消失怎么办?1、打开一份需要打印的文件,如下图所示。  2、选中所有需要的内容区域,如下图所示。  3、单击鼠标右键,选择“设置单元格格式”选项,如下图所示。  4、点击窗口上方的“边框”选项,如下图所示。  5、在左侧的线条样式中选择细实线图样,如下图所示。  6、选择“外边框”

excel同时筛选3个以上关键词怎么操作 excel同时筛选3个以上关键词怎么操作 Mar 21, 2024 pm 03:16 PM

在日常办公中经常使用Excel来处理数据,时常遇到需要使用“筛选”功能。当我们在Excel中选择执行“筛选”时,对于同一列而言,最多只能筛选两个条件,那么,你知道excel同时筛选3个以上关键词该怎么操作吗?接下来,就让小编为大家演示一遍。第一种方法是将条件逐步添加到筛选器中。如果要同时筛选出三个符合条件的明细,首先需要逐步筛选出其中一个。开始时,可以先根据条件筛选出姓“王”的员工。然后单击【确定】,接着在筛选结果中勾选【将当前所选内容添加到筛选器】。操作步骤如下所示。  同样,再次分别执行筛选

excel表格兼容模式改正常模式的方法 excel表格兼容模式改正常模式的方法 Mar 20, 2024 pm 08:01 PM

在我们日常的工作学习中,从他人处拷贝了Excel文件,打开进行内容添加或重新编辑后,再保存的有时候,有时会提示出现兼容性检查的对话框,非常的麻烦,不知道Excel软件,可不可改为正常模式呢?那么下面就由小编为大家带来解决这个问题的详细步骤,让我们一起来学习吧。最后一定记得收藏保存。1、打开一个工作表,在工作表的名称中显示多出来一个兼容模式,如图所示。2、在这个工作表中,进行了内容的修改后保存,结果总是弹出兼容检查器的对话框,很麻烦看见这个页面,如图所示。  3、点击Office按钮,点另存为,然

excel下标怎么打出来 excel下标怎么打出来 Mar 20, 2024 am 11:31 AM

e我们经常会用excel来制作一些数据表之类的,有时在输入参数数值时需要对某个数字进行上标或下标,比如数学公式就会经常用到,那么excel下标怎么打出来呢?我们一起来看看详细操作步骤:一、上标方法:1、首先Excel中输入a3(3为上标)。2、选中数字“3”,右键选择“设置单元格格式”。3、点击“上标”,然后“确定”即可。4、看,效果就是这样的。二、下标方法:1、与上标设置方法类似,在单元格中输入“ln310”(3为下标),选中数字“3”,右键选择“设置单元格格式”。2、勾选“下标”,点击“确定

excel上标应该如何设置 excel上标应该如何设置 Mar 20, 2024 pm 04:30 PM

在处理数据时,有时我们会遇到数据包含了倍数、温度等等各种符号的时候,你知道excel上标应该如何设置吗?我们在使用excel处理数据时,如果不会设置上标,这可是会让我们的很多数据在录入时就会比较麻烦。今天小编就为大家带来了excel上标的具体设置方法。1.首先,让我们打开桌面上的MicrosoftOfficeExcel文档,选择需要修改为上标的文字,具体如图所示。2.然后,点击右键,在点击后出现的菜单中,选择“设置单元格格式”选项,具体如图所示。3.接下来,在系统自动弹出来的“单元格格式”对话框

excel中iif函数的用法 excel中iif函数的用法 Mar 20, 2024 pm 06:10 PM

大部分用户使用Excel都是用来处理表格数据的,其实Excel还有vba程序编写,这个除了专人士应该没有多少用户用过此功能,在vba编写时常常会用到iif函数,它其实跟if函数的功能差不多,下面小编给大家介绍下iif函数的用法。Excel中SQL语句和VBA代码中都有iif函数。iif函数和excel工作表中的IF函数用法相似,执行真假值判断,根据逻辑计算的真假值,返回不同结果。IF函数用法是(条件,是,否)。VBA中的IF语句和IIF函数,前者IF语句是控制语句可以根据条件执行不同的语句,后者

excel阅读模式在哪里设置 excel阅读模式在哪里设置 Mar 21, 2024 am 08:40 AM

在软件的学习中,我们习惯用excel,不仅仅是因为需要方便,更因为它可以满足多种实际工作中需要的格式,而且excel运用起来非常的灵活,有种模式是方便阅读的,今天带给大家的就是:excel阅读模式在哪里设置。1、打开电脑,然后再打开Excel应用,找到目标数据。2、要想在Excel中,设置阅读模式,有两种方式。第一种:Excel中,有大量的便捷处理方式,分布在Excel中布局中。在Excel的右下角,有设置阅读模式的快捷方式,找到十字标志的图案,点击即可进入阅读模式,在十字标志的右边有一个小的三

PPT幻灯片插入excel图标的操作方法 PPT幻灯片插入excel图标的操作方法 Mar 26, 2024 pm 05:40 PM

1、打开PPT,翻页至需要插入excel图标的页面。点击插入选项卡。2、点击【对象】。3、跳出以下对话框。4、点击【由文件创建】,点击【浏览】。5、选择需要插入的excel表格。6、点击确定后跳出如下页面。7、勾选【显示为图标】。8、点击确定即可。

See all articles