一月初新内容速递丨数据管控、图表应用与函数启航

新年伊始,学习继续!一月上旬更新聚焦数据安全、图表实战、函数入门与场景深化,助你在数据智能的旅程中稳健开年!

一、技术经验分享

精细化管控数据导出,让敏感数据无处泄露!→加强数据安全管理,有效防止敏感信息外泄,提升企业数据合规性。

二、任务持续上线

【图表应用】散点图精准洞察分布→学习散点图制作与分析,掌握数据分布洞察技巧。
【函数】新手村试炼:计算度量入门挑战→函数入门实战,轻松攻克计算度量基础。
【图表应用】热力地图:看透市场浓度的战略眼→掌握热力地图绘制,直观识别市场热度分布。
BI知识闯关】精细化管控数据导出,让敏感数据无处泄露!》→巩固数据安全知识,提升管控实战能力。
【新年活动】年货采购数据侦探→结合新年主题,锻炼数据筛选与分析能力。

三、场景应用精选

价值引擎:汽车制造财务分析主题课程→延续财务数据分析实战,助力企业决策与价值挖掘。
【地图】散点地图:精确落位,洞察分布→学习散点地图应用,实现地理位置数据的可视化呈现。
【地图】热力地图:一眼识别业务“高地”与“洼地”》→掌握热力地图在业务分析中的实战应用。

四、二次开发视频更新

Excel导入模板扩展校验类》→深入学习Excel导入功能的扩展校验技术,提升数据导入的准确性与规范性。

五、活动进行中

新年第①弹|年货采购数据挑战:你能答对几题?》→趣味数据挑战赛,检验你的数据分析能力,赢取开年好礼。

六、官方通知发布

2025年度任务排行榜大揭晓!》→回顾2025年度学习成果,揭晓任务完成排行榜,激励持续学习。

七、函数应用入门

【函数课堂】函数总览篇:告别“不会用计算度量”的焦虑》→系统讲解函数使用,帮助你轻松入门计算度量,摆脱使用困惑。

麦粉社区
>
帖子详情

表格设置与在线预览不一样

数据分析 发表于 2021-4-20 15:00
发表于 2021-4-20 15:00:20
表格设置为图1 54826607e7be9dc14d.png
在线预览为图2 223607e7be75c7c7.png



发表于 2021-4-20 16:22:48
怎么设置的?是否可以把设置界面截图?
回复

使用道具 举报

发表于 2021-4-21 09:09:20
30400607f7b2fbe92c.png 32779607f7b3f4d1b2.png
回复

使用道具 举报

发表于 2021-4-21 09:09:46
Jaylin 发表于 2021-4-20 16:22
怎么设置的?是否可以把设置界面截图?

您看一下三楼我的截图
回复

使用道具 举报

发表于 2021-4-21 09:11:38
Jaylin 发表于 2021-4-20 16:22
怎么设置的?是否可以把设置界面截图?

但是导出表格,显示是对的,就是在线预览不一样
回复

使用道具 举报

发表于 2021-4-21 20:35:19
这个目前支持不了。

/**
* 客户端宏
* 对象:spreadsheetReport
* 事件:onRenderReport
*/

可以用下面这个宏尝试:
function main(spreadsheetReport) {
    // 数据条位置配置信息,key为sheet名称或者照相机的名称
    // 例如"标题"表示对"标题"sheet页进行配置
   
    var config = {
        "Sheet1": [{
            // 数据条的区域
            area: {
                start: "D2"
            },
            // 数据条的位置:MID表示单元格中点值对齐,AUTO表示自动
            position: "MID"
        }]
    };
   
    spreadsheetReport.processConditionalFormattingsHTMLs_0331 = spreadsheetReport.processConditionalFormattingsHTMLs;
   
    spreadsheetReport.processConditionalFormattingsHTMLs = function (win) {
        var data = buildDataBarPositionData.call(this, config, win)
        var ret = spreadsheetReport.processConditionalFormattingsHTMLs_0331.apply(this, arguments);
        resetDataBarPositionData.call(this, data)
        return ret;
    };
}

// 重置数据条的位置
function resetDataBarPositionData(data) {
    if (!data || !data.result || data.result.length == 0) {
        return;
    }
    var result = data.result;
    for (var i = 0; i < result.length; i++) {
        result[i].td.style.backgroundPosition = result[i].marginLeft + "px" + " 50%";
        result[i].td._resetDataBarProcessed = true;
    }
   
    for (var i = 0; i < data.noneImageTdArray.length; i++) {
        /*if (data.options[i] !== "MID") {
            continue;
        }*/
        for (var j = 0; j < data.noneImageTdArray[i].length; j++) {
            
            var td = data.noneImageTdArray[i][j];
            if (!td.style.background || td._resetDataBarProcessed) {
                continue;
            }
            if (util.trim(td.innerHTML) == "0") {
                td.style.backgroundSize = "auto";
                td.style.backgroundPosition = "center";
                //if (data.options[i] !== "MID") {
                    td.style.backgroundPosition = "-10000px 50%";
                //}
            }
        }
    }
}

// 重置数据条的位置的数据
function buildDataBarPositionData(config, win) {
    var htmls = win.conditionalFormattingsHTMLs;
    var cellRange = win.cellRange || [0, 0, 0, 0];
    if (!htmls || !win.frameElement) {
        return;
    }
    // sheet
    var sheetName = this.sheetNames[this.currentSheetIndex];
    var name;
    if (win.frameElement == this.elemSheetFrame) {
        name = sheetName;
    } else {
        if (!win.frameElement.isCamera) {
            return;
        }
        name = sheetName + "/" + win.frameElement.name;
    }
    var options = config[name];
    if (!options) {
        return;
    }
    var tdArray = [];
    var imgWidths = [];
    var noneImageTdArray = [];
    for (var key in htmls) {
                var val = htmls[key];
                var p = this.parseCellIndex(key);
                var optionIndx = findMatchedOptionIndex.call(this, options, p);
                if (optionIndx === undefined) {
                    continue;
                }
                var td = this.getFrameCell(win, p[0] - cellRange[0] + cellRange[2], p[1] - cellRange[1] + cellRange[3]);
                if (!td) {
                        continue;
                }
        var img = td.getElementsByTagName("IMG")[0];
        if (img) {
            putArray(tdArray, optionIndx, td);
            putArray(imgWidths, optionIndx, img.clientWidth);
        } else {
            putArray(noneImageTdArray, optionIndx, td);
        }
    }
   
    var result = [];
    for (var i = 0; i < tdArray.length; i++) {
        if (!tdArray[i]) {
            continue;
        }
        var position = options[i].position;
        var tdValues = [];
        for (var j = 0; j < tdArray[i].length; j++) {
            var valueTd = tdArray[i][j].getElementsByTagName("TD")[0];
            if (!valueTd) {
                continue;
            }
            var val = util.trim(valueTd.innerHTML);
            tdValues[j] = val;
            
            if (position == "MID") {
                var tdWidth = valueTd.clientWidth;
                var marginLeft =  val.indexOf("-") == 0 ?
                        tdWidth/2 - imgWidths[i][j] - 1: tdWidth/2 - 1;
                if (val == "0") {
                    marginLeft = 0;
                }
                result.push({
                    td: tdArray[i][j],
                    marginLeft: marginLeft
                });
            }
        }
        
        if (position !== "MID") {
            var max = 0;
            for (var m = 0; m < tdValues.length; m++) {
                if (tdValues[m].indexOf("-") == 0) {
                    max = Math.max(max, imgWidths[i][m]);
                }
            }
            for (var j = 0; j < tdArray[i].length; j++) {
                result.push({
                    td: tdArray[i][j],
                    marginLeft: (tdValues[j].indexOf("-") == 0 ?
                        max - imgWidths[i][j] : max)
                })
            }
        }
    }
    return {
        result: result,
        noneImageTdArray: noneImageTdArray,
        options: options
    };
}

function putArray(arr, index, val) {
    if (!arr[index]) {
        arr[index] = [];
    }
    arr[index] .push(val);
}

function findMatchedOptionIndex(options, p) {
    for (var i = 0; i < options.length; i++) {
        var option = options[i];
        if (!option.area || !option.area.start) {
            continue;
        }
        var start = option.area._$start;
        if (!start) {
            start = this.parseCellIndex(option.area.start);
            option.area._$start = start;
        }
        if (p[0] >= start[0] && p[1] == start[1]) {
                    return i;
                }
    }
}
回复

使用道具 举报

发表于 2021-4-22 09:23:16
Jaylin 发表于 2021-4-21 20:35
这个目前支持不了。

/**

晕,我又看不懂
回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies
您需要登录后才可以回帖 登录 | 立即注册

6回帖数 0关注人数 6096浏览人数
最后回复于:2021-4-22 09:23
快速回复 返回顶部 返回列表