首頁  >  文章  >  web前端  >  AngularJS匯出Excel指令

AngularJS匯出Excel指令

不言
不言原創
2018-07-09 16:06:451789瀏覽

這篇文章主要介紹了關於AngularJS匯出Excel指令,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下

##Excel匯出想法

參考文章- angularjs使用指令實作table導出csv

專案中使用到了匯出

Excel功能,潘老師已經在部落格中將表格匯出為csv的技術難點實現,剩下的,只是根據實際的業務需求對該指令進行完善。

大體遇到了以下幾個問題:

功能按鈕不匯出

AngularJS匯出Excel指令

#因為原指令預設匯出表格的所有內容,第一次直接匯出時,發現直接將檢視、編輯這幾個按鈕的

HTML程式碼都匯出了,我們要的應該是人員資訊和人員資格資訊。

指令新增參數:有效資料列數。

如圖,這裡的有效資料列就是市、區縣等等一直到有效期至,一共

15列,作為參數傳給導出指令。

self.exportCols = scope.exportCols;

for (let i = 0; i 原來內層循環的是所有資料列,現在改成傳入的有效資料列數。 <p></p>跨行表格<h2></h2><p><img src="https://img.php.cn//upload/image/680/867/883/1531123509788663.png" title="1531123509788663.png" alt="AngularJS匯出Excel指令"></p>以這個圖為例,第一行是有<p>15<code>列的,但是第二行的數據只有</code>4<code>列,因為其餘的列是第一行設定</code>rowspan<code>顯示的,實際上第二行的</code>tr<code>中只有人員資格</code>4 <code>個</code>td<code>。 </code></p><p><img src="https://img.php.cn//upload/image/843/685/233/1531123518744940.png" title="1531123518744940.png" alt="AngularJS匯出Excel指令"></p>這就導致導出的時候第二行只有四個數據,並且是從左對齊的,所以我們需要在跨行的列中添加空數據。 <p></p>加一個條件判斷,傳入出現被跨行的列時剩餘列的長度,用來區分是正常列還是被跨行的列。 <p></p><pre class="brush:php;toolbar:false">if (self.isNormalItem(rowData)) {
    // 如果该列为正常列,循环内容
    for (let j = 0; j 資格證出現空白列<h2></h2><p><img src="https://img.php.cn//upload/image/802/452/143/1531123537590884.png" title="1531123537590884.png" alt="AngularJS匯出Excel指令"></p>因為這裡需要為新增資格證按鈕新增一個空白列,匯出的時候也會出現空白列,效果並不好。 <p></p><p><img src="https://img.php.cn//upload/image/767/939/808/1531123544352657.png" title="1531123544352657.png" alt="AngularJS匯出Excel指令"></p>所以需要進行判斷,當出現被跨行的列時,需要判斷它的上一行的最後四項內容是否為空,如果為空,就應該把這個列的內容放到上一行。 <p></p><pre class="brush:php;toolbar:false">if (self.isNormalItem(rowData)) {
    // 如果该列为正常列,循环内容
    ...
} else if (self.isFirstItem(csvString)) {
    // 如果当前跨行资质是当前人员的第一个资质,则将该资质添加到上一行
    // 因为能添加人员资质的界面第一行的人员资质是空的,所以需要将该资
    // 质添加到上一行
    csvString = self.addDataToPreString(rowData, csvString);
} else {
    // 根据有效数据中的跨行列拼接空数据
    ...
}
再加一個

else,如果目前被跨行的列是當前人員的第一個人員資質的話,就把這一行的人員資質資料加到上一行人員資質的空白處。

以下是方法的具體實作:

// 判断当前表格中资质是否是第一项资质
self.isFirstItem = function(string) {
    // 分隔字符串
    var csvArray = string.split(',');
    // 循环已有字符数组的倒数四个元素,判断是否有效
    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 最終實作匯出的<p>csv<code>效果:</code></p><p><img src="https://img.php.cn//upload/image/976/352/627/1531123556704357.png" title="1531123556704357.png" alt="AngularJS匯出Excel指令">##以上就是本文的全部內容,希望對大家的學習有幫助,更多相關內容請關注PHP中文網! </p><p>相關推薦:</p><p></p>AngularJS 文件閱讀的指令scope<p class="comments-box-content"><a title="AngularJS 文档阅读的指令scope" href="http://www.php.cn/js-tutorial-406295.html" target="_blank"></a><br></p>AngularJS 表格匯出新增額外資訊<p class="mt20 ad-detail-mm hidden-xs"><a title="AngularJS 表格导出添加额外信息" href="http://www.php.cn/js-tutorial-406294.html" target="_blank"></a></p>

以上是AngularJS匯出Excel指令的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn