数据重整:用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.mzph.cn/news/98590.shtml

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

相关文章

什么是基于意图的网络(IBN)

基于意图的网络是一种网络技术,它根据业务意图(来自网络管理员的服务请求)配置 IT 基础架构,无需任何人工干预,它不断提供关键的网络见解,并不断调整硬件配置以确保满足意图,它将网络从以设备为…

【重拾C语言】七、指针(一)指针与变量、指针操作、指向指针的指针

目录 前言 七、指针 7.1 指针与变量 7.1.1 指针类型和指针变量 7.1.2 指针所指变量 7.1.3 空指针、无效指针 7.2 指针操作 7.2.1 指针的算术运算 7.2.2 指针的比较 7.2.3 指针的递增和递减 7.3 指向指针的指针 前言 指针是C语言中一个重要的概念正确灵活运用指针 可…

机器学习笔记 - 两个静态手势识别的简单示例

一、关于手势识别 手势识别方法通常分为两类:静态或动态。 静态手势是那些只需要在分类器的输入处处理单个图像的手势,这种方法的优点是计算成本较低。动态手势需要处理图像序列和更复杂的手势识别方法。 进一步了解可以参考下面链接。 静态手势识别和动态手势识别的区别和技…

【MATLAB源码-第43期】基于matlab的turbo码误码率仿真比较不同迭代次数,采用logmap/sova算法。

操作环境: MATLAB 2022a 1、算法描述 Turbo码是一种前向纠错码 (Forward Error Correction, FEC),在 1993 年由法国的两位研究员 Claude Berrou 和 Alain Glavieux 提出。这种编码技术以其接近 Shannon 极限的高性能而受到广泛关注。以下是关于 Turbo…

手摸手系列之批量修改MySQL数据库所有表中某些字段的类型

在迁移老项目的数据库时,使用Navicat Premium的数据传输功能同步了表结构和数据。但是,发现某些字段的数据类型出现了错误,例如,租户ID从Oracle的NUMBER类型变成了MySQL的decimal(10),正确的应该是bigInt(20)。此外&am…

这道面试题工作中经常碰到,但 99% 的程序员都答不上来

小时候都被问过一个脑筋急转弯,把大象放进冰箱有几个步骤?我们一开始都会抓耳挠腮,去想着该如何把大象塞进冰箱。最终揭晓的答案却根本不关心具体的操作方法,只是提供了 3 个步骤组成的流程,「把冰箱打开,把…

【力扣每日一题】2023.10.7 股票价格跨度

目录 题目: 示例: 分析: 代码: 题目: 示例: 分析: 给我们一个数组表示不同时间的股票的价格,要我们按照顺序返回每天的股票价格跨度,价格跨度就是股票价格小于或等于…

[python 刷题] 76 Minimum Window Substring

[python 刷题] 76 Minimum Window Substring 题目: Given two strings s and t of lengths m and n respectively, return the minimum window substring of s such that every character in t (including duplicates) is included in the window. If there is no …

voc数据集格式与yolo数据集格式的区别及相互转化

Pascal VOC数据集是目标检测领域最常用的标准数据集之一,几乎所有检测方向的论文都会给出其在VOC数据集上训练并评测的效果。VOC数据集包含的信息非常全,它不仅被拿来做目标检测,也可以拿来做分割等任务,因此除了目标检测所需的文…

2023高交会“创新驱动发展·智慧赋能未来”招商工作已接近尾声

第二十五届中国国际高新技术成果交易会(简称“高交会”)将于2023年11月15日至19日在深圳会展中心举行。本届高交会以“创新驱动发展智慧赋能未来”为主题,聚焦战略性新兴产业和未来产业,集中展示中国高新技术成果和创新实力。 作为…

androidStudio第一次运行报错无法运行

安卓第一次运行失败 大家好,我使用androidStudio新建了一个测试demo第一次运行,结果失败了,显示如下图: 然后查了各种方法,都是没有用,最后 历经困难,还是找到了,原来是 gradle的依…

Python 无废话-办公自动化Excel格式美化

设置字体 在使用openpyxl 处理excel 设置格式,需要导入Font类,设置Font初始化参数,常见参数如下: 关键字参数 数据类型 描述 name 字符串 字体名称,如Calibri或Times New Roman size 整型 大小点数 bold …

分类预测 | MATLAB实现POA-CNN鹈鹕算法优化卷积神经网络多特征分类预测

分类预测 | MATLAB实现POA-CNN鹈鹕算法优化卷积神经网络多特征分类预测 目录 分类预测 | MATLAB实现POA-CNN鹈鹕算法优化卷积神经网络多特征分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.Matlab实现POA-CNN鹈鹕算法优化卷积神经网络多特征分类预测&#xff0…

C# OpenCvSharp 实现迷宫解密

效果 项目 代码 using OpenCvSharp; using System; using System.Drawing; using System.Windows.Forms;namespace OpenCvSharp_实现迷宫解密 {public partial class Form1 : Form{public Form1(){InitializeComponent();}private void Form1_Load(object sender, EventArgs e…

掌握 BERT:自然语言处理 (NLP) 从初级到高级的综合指南(1)

简介 BERT(来自 Transformers 的双向编码器表示)是 Google 开发的革命性自然语言处理 (NLP) 模型。它改变了语言理解任务的格局,使机器能够理解语言的上下文和细微差别。在本文[1]中,我们将带您踏上从 BERT 基础知识到高级概念的旅…

Jmeter常用参数化技巧总结!

说起接口测试,相信大家在工作中用的最多的还是Jmeter。 JMeter是一个100%的纯Java桌面应用,由Apache组织的开放源代码项目,它是功能和性能测试的工具。具有高可扩展性、支持Web(HTTP/HTTPS)、SOAP、FTP、JAVA 等多种协议。 在做…

Dockerfile自定义容器

1、Dockerfile Dockerfile 是用于构建 Docker 镜像的文本文件,其中包含一系列的指令和配置,用于定义镜像的构建过程。通过 Dockerfile,你可以定义镜像的基础操作系统、依赖、环境设置、应用程序等信息,从而实现可复制、自动化的镜…

HRM人力资源管理系统源码

HRM人力资源管理系统源码 运行环境:PHP8.1或以上 MYSQL5.7或以上 php扩展要求 fileinfo imagemagick 功能介绍: 综合仪表板 它通过其综合仪表板提供了员工总数、工单和帐户余额的概览。 您可以轻松访问组织中的缺席者以及详细的公告和预定会议列…

OpenCV C++ Look Up Table(查找表)

OpenCV C Look Up Table(查找表) 引言 在图像处理和计算机视觉中,查找表(Look Up Table, LUT)是一种非常高效和实用的方法,用于快速地映射或更改图像的颜色和像素值。LUT 能够极大地提高图像处理算法的执…

微信小程序:实现列表单选

效果 代码 wxml <view class"all"><view class"item_all" wx:for"{{info}}" wx:key"index"><view classposition {{item.checked?"checked_parameter":""}} data-id"{{item.employee_num}}…