前端wjimo透视表和后端导出的excel展示数据排序不一致问题

271 阅读1分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

之前在工作中,使用wjimo进行透视表数据渲染,然而在前端使用wjimo默认的排序规则之后,发现和后端下载下来的excel排序不一样,也就造成了所见非所得的bug。而后端同学用的是excel插件,没办法进行代码层面的书写排序,因此只能前端在wjimo渲染时按照后端excel排序的规则进行处理并展示,也就开始了我的找规则排序之路。 下面我们就来一起看下:

  • 在寻找excel排序规则的时候,发现有多种情况:

    • 数字排在字符串前面;
    • 当存在非数字的时候:
      • 按照全汉字和非全汉字的规则进行排序;
      • 此外的情况,都转为字符串进行处理:
      • 依次比较两个字符串的各项字符,汉字排在非汉字的后面;
      • 如果两个汉字进行比较则使用 localeCompare()
      • 只要有一个无法转换为数字——先转换为字符串进行比较——再先按字符排序,然后按照数字排序
    • 都能转为数字时,按照数字大小进行排序; 大致的规则,如上所述。
  • 知道了规则之后,我们在wjimo渲染透视表的时候,使用其 sortComparer 属性,进行我们的排序规则的自定义实现。

注意:在进行汉字按照拼音排序的时候会出现多音字的情况,需要特殊处理。