高清国产av一区二区三区_亚洲欧美日韩在线_无码熟妇人妻av在线影片免费_在线无码一级伊伊_爽好舒服高H自慰软件_亚洲熟女区偷拍区高清区_午夜福利影院啪啪_亚洲国产黄片在线播放_中文字幕日韩精品乐乐影院_久久国产亚洲日韩欧美精品

掃描二維碼關(guān)注

首頁(yè) APP開(kāi)發(fā)小程序開(kāi)發(fā) 微信公眾號(hào) 網(wǎng)站建設(shè) 營(yíng)銷(xiāo)推廣 經(jīng)典案列 產(chǎn)品服務(wù) 關(guān)于我們

“學(xué)習(xí)不僅是掌握知識(shí)”

向書(shū)本學(xué)習(xí),還要向?qū)嵺`學(xué)習(xí)、向生活學(xué)習(xí)。消化已有知識(shí),
而且要力求有所發(fā)現(xiàn)、有所發(fā)明、有所創(chuàng)造

使用JavaScript將復(fù)雜表格導(dǎo)出為Excel

2019/4/7 11:21:33

使用JavaScript將復(fù)雜表格導(dǎo)出為Excel

  使用JavaScript將表格導(dǎo)出為Excel文件是一種比較常見(jiàn)的導(dǎo)出方法,但復(fù)雜表格的導(dǎo)出比較麻煩(比如報(bào)表的導(dǎo)出),為此我專門(mén)寫(xiě)了一段代碼專門(mén)處理表格導(dǎo)出,與各位分享一下。

  util.js:

/**
 * Utilities for exporting a table as an excel file
 * @author Daniel.Sun(山風(fēng)小子)
 * @version 0.6
 */
var idTmr = "";
function Cleanup() {
    window.clearInterval(idTmr);
    CollectGarbage();
} 
function exportAsXls(table) {
    function ImpactedCell(row, col, offset) {
        this.row = row;
        this.col = col;
        this.offset = offset;
    }
    function CurrentCell(row, col, text, colspan, rowspan) {
        this.row = row;
        this.col = col;
        this.text = text;
        this.colspan = colspan;
        this.rowspan = rowspan;
        this.getRow = function getRow() {
            return this.row;
        }
        this.setRow = function setRow(row) {
            this.row = row;
        }
        this.getCol = function getCol() {
            return this.col;
        }
        this.setCol = function setCol(col) {
            this.col = col;
        }
        this.setColspan = function setColspan(colspan) {
            this.colspan = colspan;
        }
        this.getColspan = function getColspan() {
            return this.colspan;
        }
        this.setRowspan = function setRowspan(rowspan) {
            this.rowspan = rowspan;
        }
        this.getRowspan = function getRowspan() {
            return this.rowspan;
        }
    }
    function CellManager(originalRow, colOffset, impactedCells, currentCell) {
        this.originalRow = originalRow;
        this.colOffset = colOffset;
        this.impactedCells = impactedCells;
        this.currentCell = currentCell;
        this.setCurrentCell = function setCurrentCell(currentCell) {
            this.currentCell = currentCell;
        }
        this.setOriginalRow = function setOriginalRow(originalRow) {
            this.originalRow = originalRow;
        }
        this.getCorrectedCol = function getCorrectedCol() {
            return this.currentCell.getCol() + this.colOffset;
        }
        this.setColOffset = function setColOffset(colOffset) {
            this.colOffset = colOffset;
        }
        this.getColOffset = function getColOffset() {
            return this.colOffset;
        }
        this.initColOffset = function initColOffset() {
            if (this.currentCell.getRow() != this.originalRow) {
                this.colOffset = 0;
            }
        }
        this.getImpactedCells = function getImpactedCells() {
            return this.impactedCells;
        }
        this.addImpactedCell = function addImpactedCell(impactedCell) {
            this.impactedCells.push(impactedCell);
        }
        this.addImpactedCells = function addImpactedCells() {
            var currentCell = this.currentCell;
            for (var i = 1; i < currentCell.getRowspan(); i++) {
                var impactedRow = currentCell.getRow() + i;
                
                this.calcOffset(impactedRow);
                var impactedCol = this.getCorrectedCol();
                var offset = 0;
                if (currentCell.getColspan()) {
                    offset = currentCell.getColspan();
                } else {
                    offset = 1;
                }
                this.addImpactedCell(new ImpactedCell(impactedRow, impactedCol, offset))
            }
        }
        this.calcOffset = function calcOffset(row) {
            var colOffset = this.colOffset;
            var result = colOffset;
            
            for (var i = 0; i < this.impactedCells.length; i++) {
                var impactedCell = this.impactedCells[i];
                if (row == impactedCell.row && this.getCorrectedCol() == impactedCell.col) {
                    colOffset += impactedCell.offset;
                    
                    result = colOffset;
                    break;
                }
            }
            this.colOffset = result;
            return result;
        }
        this.correctColOffset = function correctColOffset() {
            var currentCell = this.currentCell;
            var tmpColOffset;
            while (true) {
                this.calcOffset(currentCell.getRow());
                tmpColOffset = this.getColOffset();
                this.calcOffset(currentCell.getRow());
                if (this.getColOffset() == tmpColOffset) {
                     break;
                }
            } 
        }
        this.mergeCells = function mergeCells(oSheet, row1, col1, row2, col2) {
            oSheet.Range(oSheet.Cells(row1, col1), oSheet.Cells(row2, col2)).MergeCells = true;
        }
        this.mergeCellsConditionally = function mergeCellsConditionally(oSheet) {
            var currentCell = this.currentCell;
            var colsShouldMerge = currentCell.getColspan() > 1;
            var rowsShouldMerge = currentCell.getRowspan() > 1;
            if (colsShouldMerge && !rowsShouldMerge) {
                this.mergeCells(
                    oSheet,
                    currentCell.getRow(), this.getCorrectedCol(),
                    currentCell.getRow(), this.getCorrectedCol() + currentCell.getColspan() - 1
                );
            } else if (!colsShouldMerge && rowsShouldMerge) {
                this.mergeCells(
                    oSheet,
                    currentCell.getRow(), this.getCorrectedCol(),
                    currentCell.getRow() + currentCell.getRowspan() - 1, this.getCorrectedCol()
                );
            } else if (colsShou


深圳市南山區(qū)南山街道南海大道西桂廟路北陽(yáng)光華藝大廈1棟4F、4G-04

咨詢電話:136 8237 6272
大客戶咨詢:139 0290 5075
業(yè)務(wù)QQ:195006118
技術(shù)QQ:179981967

精銳軟件

Copyright? 2018-2023 深圳精銳軟件技術(shù)有限公司 All Rights Reserved. ICP備案號(hào):粵ICP備18108116號(hào)-8 公安備案號(hào):粵公網(wǎng)安備44030502009460號(hào)