博客 / 詳情

返回

10萬行數據1秒內排序,智表 ZCELL 讓你輕鬆駕馭數據秩序

在數據驅動決策的時代,面對海量雜亂的數據,快速梳理出清晰的邏輯秩序是提升工作效率的關鍵。無論是篩選銷售榜單中的 Top 產品、整理員工信息表中的職級與入職時間,還是按自定義規則排列特殊業務數據,排序功能都是數據處理環節的 “剛需工具”。傳統表格工具的排序功能常受限於操作繁瑣、多條件排序邏輯複雜、自定義規則難實現等問題,而智表 ZCELL 憑藉其靈活、高效的排序能力,徹底解決這些痛點,讓數據排序從 “耗時操作” 變為 “一鍵搞定”。

一、插件初始化與數據源初始化

在演示之前,需要先做好插件和數據源初始化工作,具體步驟如下:

以下是具體代碼示例:

  1. 初始化 zcell插件
 //初始化ZCELL
        var options = {
          container: document.getElementById("zcell-container"),
        };
        zcell_io = new ZCell.WorkBook(options);

  

2. 初始化工作表,設置表頭凍結,行數為10萬行

 
 //初始化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. 設置表頭和樣式,也可以不設置

 
//#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. 準備數據集和數據源,並綁定到工作表

 //準備數據集
        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);

 

數據加載後效果如下:

二、單字段基礎排序:極簡操作,秒變有序數據

智表 ZCELL 的基礎排序功能遵循 “簡單易用” 的設計原則,開發者無需複雜配置,通過幾行代碼即可實現單字段的升序或降序排列,滿足日常數據整理的基礎需求。無論是文本、數字還是日期類型的數據,智表 ZCELL 都能精準識別並快速排序,讓雜亂數據瞬間變得條理清晰。

  1. 排序參數設置,設置排序的列號和順序,支持升序和降序
  
//排序參數設置
        let option = {
          sortinfo: [
            {
              sortindex: "B", //排序列號,必須大寫,對B列進行排序
              sortorder: "asc", //支持 asc 和 desc ,按照升序排序
            },
          ],
        };

2. 開始排序,調用排序方法,知名排序起始行列和結束行列的範圍。

 
//開始時間
        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 的多列排序功能就能發揮關鍵作用,支持按多個字段的優先級依次排序,讓數據邏輯更貼合業務場景。還是以上面已經初始化的數據源為例進行演示。

  1. 多列排序時排序參數設置。

通過數組配置排序規則,數組中字段的順序即為排序優先級(先按第一個字段排序,若第一個字段值相同,則按第二個字段排序,以此類推)。我們先以B列作為主排序字段,相同時再用D列作為排序字段。

  
//排序參數設置
        let option = {
          sortinfo: [
            {
              sortindex: "B", //排序列號,必須大寫  先以B列升序排序
              sortorder: "asc", //支持 asc 和 desc
            },
            {
              sortindex: "D",  //再以D列降序排序
              sortorder: "desc",
            },
          ],
        };

2. 執行排序,執行排序方法與單列排序時相同,非常簡單。

 
//開始時間
        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列值進行排序,整體耗時顯示0.88秒,整個過程無延遲。

三、自定義排序:突破規則限制,適配特殊業務場景

除了基礎排序和多列排序,實際工作中還會遇到 “非標準排序規則” 的需求。例如:

  • 電商平台的 “商品狀態” 需按 “在售>預售>下架” 排序(而非字母或數字順序);
  • 物流系統的 “配送優先級” 需按 “緊急>普通>延遲” 排序;
  • 教育機構的 “班級類型” 需按 “實驗班>重點班>普通班” 排序。

這些場景下,傳統排序功能無法滿足需求,而智表 ZCELL 的自定義排序功能,允許開發者通過自定義比較函數,實現任意規則的排序,徹底突破標準排序的限制。

繼續以上面的初始化數據為列,步驟如下:

  1. 自定義比較函數,如下所示,我們定義固定數組,按照數組內元素數據位置進行比較。
  
 //自定義排序函數
      function mysortfun(a, b) {
        let datas = ["甲等", "乙等", "丙等", "丁等"];
        let indexa = datas.indexOf(a);
        let indexb = datas.indexOf(b);
        return indexa - indexb;
      }

 

2. 定義排序參數,對於C列(等級列),我們採用自定義比較函數進行比較,引用我們定義好的函數

//排序參數設置
        let option = {
          sortinfo: [
            {
              sortindex: "B", //排序列號,必須大寫
              sortorder: "asc", //支持 asc 和 desc
            },
            {
              sortindex: "C",
              sortorder: "asc",
              sortfun: mysortfun, //這裏引用自定義比較函數,
            },
          ],
        };

 

3. 執行排序,調用方法與前面一致

  
//開始時間
        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 的排序功能具有三大核心優勢:

  1. 高效性能:採用優化的排序算法,即使面對 10 萬級海量數據,排序響應時間仍控制在 1秒 以內,無卡頓延遲;
  2. 操作靈活:支持單列排序、多列排序、自定義排序三種模式,可通過 API 快速切換,也可結合 UI 組件(如排序按鈕、下拉菜單)實現用户自主排序;

無論是企業級的數據管理系統(如 CRM、ERP)、電商平台的商品分析模塊,還是教育機構的成績管理工具,智表 ZCELL 的排序功能都能幫助開發者快速實現數據梳理,讓用户輕鬆駕馭數據秩序,高效挖掘數據價值。

現在,智表 ZCELL 已開放免費試用,立即接入智表zcell官網進行測試,體驗排序功能帶來的便捷與高效!如需定製化排序方案,還可聯繫技術團隊獲取專屬支持,讓數據處理效率再升級。

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.