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

数据,重整,java,实现,精准,excel,排序,实用,策略 · 浏览次数 : 57

小编点评

## Java 数据排序方法详解 本篇介绍了使用 Java 实现各种数据排序的方法,包括: 1. 按值排序 2. 按图标排序 3. 按字体颜色排序 4. 按背景色排序 5. 根据自定义序列排序 **1. 按值排序** ```java public void SortByValue() { Workbook wb = new Workbook(); SetExampleData(wb); IWorksheet sheet = wb.getActiveSheet(); // 设置排序方向 sheet.getRange("A2:F7").sort(sheet.getRange("F2:F7"), SortOrder.Ascending, SortOrientation.Columns); // 保存结果 wb.save("output/sortByValue.xlsx"); } ``` **2. 按图标排序** ```java 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"), 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/sortByIcon.xlsx"); } ``` **3. 按字体颜色排序** ```java public void SortByFontColor() { Workbook wb = new Workbook(); SetExampleData(wb); IWorksheet sheet = wb.getActiveSheet(); // 设置字体颜色设置 sheet.getRange("F2:F7").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 FontColorSortField(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/sortByFontColor.xlsx"); } ``` **4. 按背景色排序** ```java public void SortByBackgroundColor() { Workbook wb = new Workbook(); SetExampleData(wb); IWorksheet sheet = wb.getActiveSheet(); // 设置背景颜色设置 sheet.getRange("F2:F7").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. 根据自定义序列排序** ```java public void CustomSort() { Workbook wb = new Workbook(); SetExampleData(wb); IWorksheet sheet = wb.getActiveSheet(); // 创建自定义排序字段 ValueSortField sortkey = new ValueSortField(sheet.getRange("A2:A7"), "\\\"Angela\\\", \\\"Damon\\\"\"); // 设置排序字段 sheet.getSort().getSortFields().add(sortkey); // 设置排序范围 sheet.getSort().setRange(sheet.getRange("A2:F7")); // 设置排序方向 sheet.getSort().setOrientation(SortOrientation.Columns, false); // 应用排序 sheet.getSort().apply(); // 保存结果 wb.save("output/customSort.xlsx"); } ``` **总结** 以上代码展示了如何使用不同的方法实现数据排序,希望能够帮助您对 Java 中数据排序的相关知识有所了解。

正文

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

前言

在数据处理或者数据分析的场景中,需要对已有的数据进行排序,在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数据进行排序的方法,如果您想了解更多有关于数据排序的玩法和技巧,可以参考这篇帮助手册,无论是初学者还是有经验的专业人士,该帮助手册都将为您提供有价值的指导和帮助。

扩展链接:

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

低代码开发平台是什么?

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

与数据重整:用Java实现精准Excel数据排序的实用策略相似的内容:

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

摘要:本文由葡萄城技术团队原创并首发。转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 前言 在数据处理或者数据分析的场景中,需要对已有的数据进行排序,在Excel中可以通过排序功能进行整理数据。而在Java中,则可以借助Excel表格插件对数据进行批量排序

记录一次排查解决服务器卡死的过程

前言 自己个人兴趣爱好,线上有一个阿里云服务器,处理数据用的,会频繁IO和分析数据。隔一段时间就会卡死(大概2个月),重启就OK。本来没当一回事,直到后来影响到赚取money了才引起重视。服务的启动脚本如下: nohup java -Xms512m -Xmx1024m -jar xxx.jar &

【ESP32】制作 Wi-fi 音箱(HTTP + I2S 协议)

用 Wifi 来传输音频数据,会比蓝牙更好。使用蓝牙方式,不管你用什么协议,都会对数据重新编码,说人话就是有损音质,虽然不至于全损。而使用 Wifi 就可以将 PCM 数据直接传输,无需再编码和压缩。在 ESP32 开发板上可以通过 I2S(IIS)向功放芯片发出音频数据。 关于 i2s 的时序,老

【.NET深呼吸】用代码写WPF控件模板

这一次咱们来探究一下怎么用纯代码写 WPF 模板。模板有个共同基类 FrameworkTemplate,数据模板、控件模板等是从此类派生的,因此,该类已定义了一些通用成员。 用代码构建模板,重要的成员是 VisualTree 属性,它的类型是 FrameworkElementFactory。可见,模

大数据 - DWS层 业务实现

统计主题 需求指标【ADS】输出方式计算来源来源层级 访客【DWS】pv可视化大屏page_log 直接可求dwd UV(DAU)可视化大屏需要用 page_log 过滤去重dwm UJ 跳出率可视化大屏需要通过 page_log 行为判断dwm 进入页面数可视化大屏需要识别开始访问标识dwd 连续

在线问诊 Python、FastAPI、Neo4j — 创建 饮食节点

目录饮食数据创建节点 根据疾病、症状,判断出哪些饮食不能吃,哪些建议多吃 饮食数据 foods_data.csv 建议值用“”引起来。避免中间有,号造成误识别 饮食 "辣椒" "大蒜" "芥末" "海鲜" "胡萝卜" "核桃仁" "菠菜" "西红柿" "香蕉" 创建节点 重构代码,将 def exe

用python用户注册和短信验证码逻辑实现案例

一.写代码前分析(逻辑分析OK了才可以顺利成章的敲代码): A、用户发送请求 1、注册账号(用户名不能重复)--按照需求进行判断 2、短信验证码(有效期5分钟)--对短信验证码进行保存 B、用户注册、短信验证用不同得函数封装实现 d_user={} #存放用户名和密码的数据字典 verificati

解密Elasticsearch:深入探究这款搜索和分析引擎

最近使用Elasticsearch实现画像系统,实现的dmp的数据中台能力。同时调研了竞品的架构选型。以及重温了redis原理等。特此做一次es的总结和回顾。网上没看到有人用Elasticsearch来完成画像的。我来做第一次尝试。

OI-Wiki 学习笔记

算法基础 \(\text{Update: 2024 - 07 - 22}\) 复杂度 定义 衡量一个算法的快慢,一定要考虑数据规模的大小。 一般来说,数据规模越大,算法的用时就越长。 而在算法竞赛中,我们衡量一个算法的效率时,最重要的不是看它在某个数据规模下的用时,而是看它的用时随数据规模而增长的趋

[转帖]运维必知必会的监控知识体系全梳理

https://cloud.tencent.com/developer/article/1951090?areaSource=104001.189&traceId=7WZNP412yK3vh7ebw4th0 监控是整个运维乃至整个产品生命周期中最重要的一环,事前及时预警发现故障,事后提供详实的数据用