找回密码
 立即注册
首页 业界区 安全 10万行数据1秒内排序,智表 ZCELL 让你轻松驾驭数据秩序 ...

10万行数据1秒内排序,智表 ZCELL 让你轻松驾驭数据秩序

煅圆吧 6 天前
在数据驱动决策的时代,面对海量杂乱的数据,快速梳理出清晰的逻辑秩序是提升工作效率的关键。无论是筛选销售榜单中的 Top 产品、整理员工信息表中的职级与入职时间,还是按自定义规则排列特殊业务数据,排序功能都是数据处理环节的 “刚需工具”。传统表格工具的排序功能常受限于操作繁琐、多条件排序逻辑复杂、自定义规则难实现等问题,而智表 ZCELL 凭借其灵活、高效的排序能力,彻底解决这些痛点,让数据排序从 “耗时操作” 变为 “一键搞定”。
一、插件初始化与数据源初始化

在演示之前,需要先做好插件和数据源初始化工作,具体步骤如下:
以下是具体代码示例:

  • 初始化 zcell插件
  1. //初始化ZCELL        var options = {          container: document.getElementById("zcell-container"),        };        zcell_io = new ZCell.WorkBook(options);
复制代码
  
2. 初始化工作表,设置表头冻结,行数为10万行
 
  1. //初始化SHEET        let sheetoption = {          name: "sheet01", //表格名          rowCount: 100000, //行数          colCount: 10, // 列数          showRowLab: 0, //行标签不显示          showColLab: 0, //列标签不显示          rowHSize: 30, //默认行高          colWSize: 100, //默认列宽          freezeTop: 0, //顶部冻结          showFreezeLine: 0, //冻结线不显示        };        sheet = zcell_io.AppendSheet(sheetoption);
复制代码
 
3. 设置表头和样式,也可以不设置
 
  1. //#region ------设置表头 文本和样式-----        sheet.SetCellValue(0, 0, "序号");        sheet.SetCellValue(0, 1, "人物");        sheet.SetCellValue(0, 2, "等级");        sheet.SetCellValue(0, 3, "特征1");        sheet.SetCellValue(0, 4, "特征2");        sheet.SetCellValue(0, 5, "特征3");        sheet.SetCellValue(0, 6, "特征4");        sheet.SetCellValue(0, 7, "特征5");        //表头样式        let headstyle1 = {          hAlign: "center",          fontBold: 1,          backColor: "#886600",          fontColor: "#FFFFFF",        };        sheet.SetCellStyle(0, 0, headstyle1);        sheet.SetCellStyle(0, 1, headstyle1);        sheet.SetCellStyle(0, 2, headstyle1);        sheet.SetCellStyle(0, 3, headstyle1);        sheet.SetCellStyle(0, 4, headstyle1);        sheet.SetCellStyle(0, 5, headstyle1);        sheet.SetCellStyle(0, 6, headstyle1);        sheet.SetCellStyle(0, 7, headstyle1);        //设置列宽        sheet.SetColWidth(3, 3, 200); //设置列宽        //#endregion ------设置表头 文本和样式-----
复制代码
 
4. 准备数据集和数据源,并绑定到工作表
  1. //准备数据集        var datas = [];        for (let i = 0; i < 100000; i++) {          let randv = getRandomInt(1, 4);          let sv;          if (randv == "1") sv = "甲等";          else if (randv == "2") sv = "乙等";          else if (randv == "3") sv = "丙等";          else if (randv == "4") sv = "丁等";          let item = {            rowno: "行号" + i,            person: "徒弟" + getRandomInt(1, 4),            status: sv,            lableval: i * 2 + 1,            lableval2: i * 2 + 2,            lableval3: i * 2 + 3,            lableval4: i * 2 + 4,            lableval5: i * 2 + 5,          };          datas.push(item);        }                 //#region  --------准备数据源--------        let option2 = {          name: "data1",          type: 1, //0- datacard,1是 datatable          data: datas,          startrow: 1, //  datatable 式需要设置          startcol: "A", //  datatable 式需要设置          autoBindColumn: true,        };        let ds = sheet.CreatDataSource(option2);                 //绑定数据源        sheet.BindDataSource(ds);
复制代码
 
  1. [/code]数据加载后效果如下:
  2. [align=center] 1.webp [/align]
  3. [size=5]二、单字段基础排序:极简操作,秒变有序数据[/size]
  4. 智表 ZCELL 的基础排序功能遵循 “简单易用” 的设计原则,开发者无需复杂配置,通过几行代码即可实现单字段的升序或降序排列,满足日常数据整理的基础需求。无论是文本、数字还是日期类型的数据,智表 ZCELL 都能精准识别并快速排序,让杂乱数据瞬间变得条理清晰。
  5. [list=1]
  6. [*]排序参数设置,设置排序的列号和顺序,支持升序和降序
  7. [/list]  [code]//排序参数设置        let option = {          sortinfo: [            {              sortindex: "B", //排序列号,必须大写,对B列进行排序              sortorder: "asc", //支持 asc 和 desc ,按照升序排序            },          ],        };
复制代码
  1. [/code]2. 开始排序,调用排序方法,知名排序起始行列和结束行列的范围。
  2.  [code]//开始时间        var myTime1 = window.performance.now();        //执行排序方法,排序范围为 0行,0列开始到 99999行 和 7列        sheet.SortArea(0, 0, 99999, 7, option);        //结束时间        var myTime2 = window.performance.now();        let timecost = (myTime2 - myTime1) / 1000;        $("#timecost1").html(timecost + "秒");  //输出耗时
复制代码
 
点击按钮后,数据立即按照 B列 从低到高排列,排序范围内的数据都会跟随排列,不在排序范围内数据则会保持不动。耗时显示0.85秒,整个过程无延迟,操作直观高效。
三、多列排序:复杂条件下的精准数据梳理

在实际业务场景中,单一字段排序往往无法满足需求。例如,HR 整理员工表时,需要先按 “部门” 分组,再按 “入职时间” 降序排列(同一部门内,新员工在前);电商平台分析订单时,需先按 “订单状态”(已付款>待付款>已取消)排序,再按 “下单时间” 降序排列。此时,智表 ZCELL 的多列排序功能就能发挥关键作用,支持按多个字段的优先级依次排序,让数据逻辑更贴合业务场景。还是以上面已经初始化的数据源为例进行演示。

  • 多列排序时排序参数设置。
通过数组配置排序规则,数组中字段的顺序即为排序优先级(先按第一个字段排序,若第一个字段值相同,则按第二个字段排序,以此类推)。我们先以B列作为主排序字段,相同时再用D列作为排序字段。
  
  1. //排序参数设置        let option = {          sortinfo: [            {              sortindex: "B", //排序列号,必须大写  先以B列升序排序              sortorder: "asc", //支持 asc 和 desc            },            {              sortindex: "D",  //再以D列降序排序              sortorder: "desc",            },          ],        };
复制代码
  1. [/code]2. 执行排序,执行排序方法与单列排序时相同,非常简单。
  2.  [code]//开始时间        var myTime1 = window.performance.now();        //执行排序方法        sheet.SortArea(0, 0, 99999, 7, option);        //结束时间        var myTime2 = window.performance.now();        let timecost = (myTime2 - myTime1) / 1000;        $("#timecost1").html(timecost + "秒");
复制代码
  1. [/code]点击按钮排序后,数据先按照人物名称进行排序,同一人物时,再按照特征1列值进行排序,整体耗时显示0.88秒,整个过程无延迟。
  2. [size=5]三、自定义排序:突破规则限制,适配特殊业务场景[/size]
  3. 除了基础排序和多列排序,实际工作中还会遇到 “非标准排序规则” 的需求。例如:
  4. [list]
  5. [*]电商平台的 “商品状态” 需按 “在售>预售>下架” 排序(而非字母或数字顺序);
  6. [*]物流系统的 “配送优先级” 需按 “紧急>普通>延迟” 排序;
  7. [*]教育机构的 “班级类型” 需按 “实验班>重点班>普通班” 排序。
  8. [/list]这些场景下,传统排序功能无法满足需求,而智表 ZCELL 的[b]自定义排序[/b]功能,允许开发者通过自定义比较函数,实现任意规则的排序,彻底突破标准排序的限制。
  9. 继续以上面的初始化数据为列,步骤如下:
  10. [list=1]
  11. [*]自定义比较函数,如下所示,我们定义固定数组,按照数组内元素数据位置进行比较。
  12. [/list]  [code] //自定义排序函数      function mysortfun(a, b) {        let datas = ["甲等", "乙等", "丙等", "丁等"];        let indexa = datas.indexOf(a);        let indexb = datas.indexOf(b);        return indexa - indexb;      }
复制代码
 
2. 定义排序参数,对于C列(等级列),我们采用自定义比较函数进行比较,引用我们定义好的函数
  1. //排序参数设置        let option = {          sortinfo: [            {              sortindex: "B", //排序列号,必须大写              sortorder: "asc", //支持 asc 和 desc            },            {              sortindex: "C",              sortorder: "asc",              sortfun: mysortfun, //这里引用自定义比较函数,            },          ],        };
复制代码
 
3. 执行排序,调用方法与前面一致
  
  1. //开始时间        var myTime1 = window.performance.now();        //执行排序方法        sheet.SortArea(0, 0, 99999, 7, option);        //结束时间        var myTime2 = window.performance.now();        let timecost = (myTime2 - myTime1) / 1000;        $("#timecost1").html(timecost + "秒");
复制代码
 
点击按钮后,数据先按照人物名称进行排序,同一人物时,再按照等级列进行排序,整体耗时显示0.92秒,整个过程无延迟。
通过自定义比较函数,任何复杂的排序逻辑都能轻松实现,让排序功能完全适配业务场景。
四、智表 ZCELL 排序功能的核心优势

相比传统表格工具或其他前端表格组件,智表 ZCELL 的排序功能具有三大核心优势:

  • 高效性能:采用优化的排序算法,即使面对 10 万级海量数据,排序响应时间仍控制在 1秒 以内,无卡顿延迟;
  • 操作灵活:支持单列排序、多列排序、自定义排序三种模式,可通过 API 快速切换,也可结合 UI 组件(如排序按钮、下拉菜单)实现用户自主排序;
无论是企业级的数据管理系统(如 CRM、ERP)、电商平台的商品分析模块,还是教育机构的成绩管理工具,智表 ZCELL 的排序功能都能帮助开发者快速实现数据梳理,让用户轻松驾驭数据秩序,高效挖掘数据价值。
现在,智表 ZCELL 已开放免费试用,立即接入智表zcell官网进行测试,体验排序功能带来的便捷与高效!如需定制化排序方案,还可联系技术团队获取专属支持,让数据处理效率再升级。

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

昨天 04:29

举报

18 小时前

举报

您需要登录后才可以回帖 登录 | 立即注册