数据重整:用Java实现精准Excel数据排序的实用策略

摘要:本文由葡萄城技术团队原创并首发。转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。

前言

在数据处理或者数据分析的场景中,需要对已有的数据进行排序,在Excel中可以通过排序功能进行整理数据。而在Java中,则可以借助Excel表格插件对数据进行批量排序,下面是一些常见的数据排序方法:

  • 按值排序
  • 按图标排序
  • 按字体颜色排序
  • 按背景色排序
  • 根据自定义序列排序

下面小编将为大家介绍如何使用Java分别实现上述的Excel数据排序。

样例数据

为了方便展示,先准备一些样例数据,用于排序,定义一个方法,传入workbook,在上面添加如下数据。

private void SetExampleData(Workbook wb) {Object data = new Object[][]{{"Name", "City", "Birthday", "Eye color", "Weight", "Height"},{"Richard", "New York", new GregorianCalendar(1968, 5, 8), "Blue", 67, 165},{"Nia", "New York", new GregorianCalendar(1972, 6, 3), "Brown", 62, 134},{"Jared", "New York", new GregorianCalendar(1964, 2, 2), "Hazel", 72, 180},{"Natalie", "Washington", new GregorianCalendar(1972, 7, 8), "Blue", 66, 163},{"Damon", "Washington", new GregorianCalendar(1986, 1, 2), "Hazel", 76, 176},{"Angela", "Washington", new GregorianCalendar(1993, 1, 15), "Brown", 68, 145}};IWorksheet sheet = wb.getWorksheets().get(0);sheet.getRange("A1:F7").setValue(data);sheet.getRange("A:F").setColumnWidth(15);wb.save("output/sampleData.xlsx");}

样例数据如下所示:

1. 按值排序

按值排序是指根据单元格值按特定顺序排列数据的排序操作。setOrientation方法用于指定排序的方向类别,即列或行。

public void SortByValue() {Workbook wb = new Workbook();SetExampleData(wb);IWorksheet sheet = wb.getActiveSheet();//对F列做升序排序.sheet.getRange("A2:F7").sort(sheet.getRange("F2:F7"), SortOrder.Ascending, SortOrientation.Columns);wb.save("output/sortByValue.xlsx");}

实现效果如下图所示:

2. 按图标排序

按图标排序是指基于单元格的条件格式图标执行的排序操作。

public void SortByIcon() {Workbook wb = new Workbook();SetExampleData(wb);IWorksheet sheet = wb.getActiveSheet();IIconSetCondition iconset = sheet.getRange("F2:F27").getFormatConditions().addIconSetCondition();iconset.setIconSet(wb.getIconSets().get(IconSetType.Icon3TrafficLights1));sheet.getSort().getSortFields().add(new IconSortField(sheet.getRange("F2:F7"),wb.getIconSets().get(IconSetType.Icon3TrafficLights1).get(2), SortOrder.Ascending));sheet.getSort().setRange(sheet.getRange("A2:F7"));sheet.getSort().setOrientation(SortOrientation.Columns);sheet.getSort().apply();wb.save("output/sortByIcon.xlsx");}

实现效果如下图所示:

3. 按字体颜色排序

按字体颜色排序是指根据单元格的显示格式和字体颜色执行的排序操作。

public void SortByFontColor() {Workbook wb = new Workbook();SetExampleData(wb);IWorksheet sheet = wb.getActiveSheet();sheet.getRange("F2").getFont().setColor(Color.GetRed());sheet.getRange("F3").getFont().setColor(Color.GetGainsboro());sheet.getRange("F4").getFont().setColor(Color.GetGreen());sheet.getRange("F5").getFont().setColor(Color.GetGainsboro());sheet.getRange("F6").getFont().setColor(Color.GetGainsboro());sheet.getRange("F7").getFont().setColor(Color.GetGainsboro());sheet.getSort().getSortFields().add(new FontColorSortField(sheet.getRange("F2:F7"),sheet.getRange("F7").getFont().getColor(), SortOrder.Ascending));sheet.getSort().setRange(sheet.getRange("A2:F7"));sheet.getSort().setOrientation(SortOrientation.Columns);sheet.getSort().apply();wb.save("output/sortByFontColor.xlsx");}

实现效果如下图所示:

4. 按背景色排序

按背景颜色排序是指根据单元格的背景颜色进行排序的操作。

public void SortByBackgroundColor() {Workbook wb = new Workbook();SetExampleData(wb);IWorksheet sheet = wb.getActiveSheet();sheet.getRange("F2").getInterior().setColor(Color.GetLightPink());sheet.getRange("F3").getInterior().setColor(Color.GetLightGreen());sheet.getRange("F4").getInterior().setColor(Color.GetLightPink());sheet.getRange("F5").getInterior().setColor(Color.GetLightGreen());sheet.getRange("F6").getInterior().setColor(Color.GetLightBlue());sheet.getRange("F7").getInterior().setColor(Color.GetLightPink());sheet.getSort().getSortFields().add(new CellColorSortField(sheet.getRange("F2:F7"),sheet.getRange("F4").getDisplayFormat().getInterior(), SortOrder.Ascending));sheet.getSort().setRange(sheet.getRange("A2:F7"));sheet.getSort().setOrientation(SortOrientation.Columns);sheet.getSort().apply();wb.save("output/sortByBackgroundColor.xlsx");}

实现效果如下图所示:

5. 根据自定义序列排序

public void CustomSort() {Workbook wb = new Workbook();SetExampleData(wb);IWorksheet sheet = wb.getActiveSheet();ValueSortField sortkey = new ValueSortField(sheet.getRange("A2:A7"), "\"Angela\", \"Damon\"");sheet.getRange("A2:F7").sort(SortOrientation.Columns, false, sortkey);wb.save("output/customSort.xlsx");}

实现效果如下图所示:

总结

以上就是在Java中对Excel数据进行排序的方法,如果您想了解更多有关于数据排序的玩法和技巧,可以参考这篇帮助手册,无论是初学者还是有经验的专业人士,该帮助手册都将为您提供有价值的指导和帮助。

扩展链接:

从表单驱动到模型驱动,解读低代码开发平台的发展趋势

低代码开发平台是什么?

基于分支的版本管理,帮助低代码从项目交付走向定制化产品开发

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/129029.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

NPM使用

nodejs 安装查看:windows11 安装Nodejs-CSDN博客 一、初始化项目 1、创建文件夹 E:\vue\projectCode\npm-demo 2、打开cmd 进入E:\vue\projectCode\npm-demo目录输入cmd 点击回车 3、先看看npm命令是否可用 npm -v 4、初始化项目 npm init package name: (npm…

c语言练习题83:#include“ “和#include<>的区别

#include" "和#include<>的区别 #include<> 默认根据环境变量的值去先搜索标准库&#xff0c;搜索系统文件会比较快。 #include“” 先搜索当前工程的路径&#xff0c;搜索自己自定义的文件会比较快。 因此自定义的头文件的名称包含在<>中的话…

【Linux】冯诺依曼体系结构初识操作系统

文章目录 1. 冯诺依曼体系结构2. 初识操作系统2.1 操作系统是什么&#xff1f;2. 为什么要有操作系统3. 操作系统是怎么管理的4. 系统调用&#xff08;System Call&#xff09; 1. 冯诺依曼体系结构 我们常见的计算机&#xff0c;如笔记本。我们不常见的计算机&#xff0c;如服…

CS5232/CS5212支持热拔插应用主板DP转VGA转接芯片方案设计

北京集睿致远CS5212是DP转VGA芯片&#xff0c;应用于各种转接线或主板应用。但对于主板市场DP转VGA转接板更适合用CS5232,其优势是&#xff1a;支持热拔插&#xff0c;温度范围也更广。 CS5232管脚定义: CS5232设计参考原理图如下&#xff1a; 以上综合来看&#xff0c;CS5232…

HttpClient实现爬虫开发

网络爬虫是一种高效获取网络信息的方式&#xff0c;而HttpClient是一个强大而灵活的Java库&#xff0c;提供了方便的API和丰富的功能&#xff0c;使其成为开发高效且灵活的网络爬虫的理想选择。本文将分享如何利用HttpClient库进行网络爬虫开发&#xff0c;帮助您更好地理解并实…

HarmonyOS学习路之方舟开发框架—学习ArkTS语言(状态管理 八)

其他状态管理概述 除了前面章节提到的组件状态管理和应用状态管理&#xff0c;ArkTS还提供了Watch和$$来为开发者提供更多功能&#xff1a; Watch用于监听状态变量的变化。$$运算符&#xff1a;给内置组件提供TS变量的引用&#xff0c;使得TS变量和内置组件的内部状态保持同步…

连续子数组的最大和

这其实用到的是一个dp的动态规划数组来描写的。 用两个变量就能解决了&#xff0c;一个是max(记录前i个数中子数组的最大的和), 一个是sum是记录前i个数组的和最大值和自己去比较&#xff0c;就是前i-1个和是8&#xff0c;自己是-2&#xff0c; 8 - 2 > -2&#xff0c;所以…

websocket实现go(server)与c#(client)通讯

go 服务端 使用到github.com/gorilla/websocket package mainimport ("fmt""github.com/gorilla/websocket""log""net/http" )func main() {var upgrader websocket.Upgrader{ReadBufferSize: 1024,WriteBufferSize: 1024,CheckOr…

PDF有限制不能复制怎么办?

大家现在接触PDF文件越来越多&#xff0c;有的时候在网上下载的PDF文件打开之后&#xff0c;发现选中文字之后无法复制。甚至其他功能也都无法使用&#xff0c;这是怎么回事&#xff1f;该怎么办&#xff1f; 当我们发现文件打开之后&#xff0c;编辑功能无法使用&#xff0c;很…

如何领取京东优惠券用微信支付还是用支付宝支付购买商品?

京东用微信支付还是用支付宝支付&#xff1f; 京东商城购物不支持支付宝支付&#xff0c;现京东商城支持的支付方式包括&#xff1a;京东支付、银行卡、信用卡、微信支付、云闪付等&#xff1b; 京东如何领取优惠券用微信支付购物&#xff1f; 1、打开京东APP&#xff0c;挑选…

Suricata + Wireshark离线流量日志分析

目录 一、访问一个404网址&#xff0c;触发监控规则 1、使用python搭建一个虚拟访问网址 2、打开Wireshark,抓取流量监控 3、在Suricata分析数据包 流量分析经典题型 入门题型 题目&#xff1a;Cephalopod(图片提取) 进阶题型 题目&#xff1a;抓到一只苍蝇(数据包筛选…

C语言进阶---程序环境和预处理

C语言进阶---程序环境和预处理 前言一、程序的翻译环境、执行环境二、详解&#xff1a;C语言程序的编译链接三、预定义符号介绍四、预处理指令 #define五、宏和函数的对比&#xff08;思维导图&#xff09;六、命令定义、预处理指令 #include #undef1.命名约定2.命令行定义 七、…