Java實(shí)現(xiàn)精準(zhǔn)Excel數(shù)據(jù)排序的方法詳解
前言
在數(shù)據(jù)處理或者數(shù)據(jù)分析的場(chǎng)景中,需要對(duì)已有的數(shù)據(jù)進(jìn)行排序,在Excel中可以通過(guò)排序功能進(jìn)行整理數(shù)據(jù)。而在Java中,則可以借助Excel表格插件對(duì)數(shù)據(jù)進(jìn)行批量排序,下面是一些常見(jiàn)的數(shù)據(jù)排序方法:
- 按值排序
- 按圖標(biāo)排序
- 按字體顏色排序
- 按背景色排序
- 根據(jù)自定義序列排序
下面小編將為大家介紹如何使用Java分別實(shí)現(xiàn)上述的Excel數(shù)據(jù)排序。
樣例數(shù)據(jù)
為了方便展示,先準(zhǔn)備一些樣例數(shù)據(jù),用于排序,定義一個(gè)方法,傳入workbook,在上面添加如下數(shù)據(jù)。
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"); }
樣例數(shù)據(jù)如下所示:
1. 按值排序
按值排序是指根據(jù)單元格值按特定順序排列數(shù)據(jù)的排序操作。setOrientation方法用于指定排序的方向類別,即列或行。
public void SortByValue() { Workbook wb = new Workbook(); SetExampleData(wb); IWorksheet sheet = wb.getActiveSheet(); //對(duì)F列做升序排序. sheet.getRange("A2:F7").sort(sheet.getRange("F2:F7"), SortOrder.Ascending, SortOrientation.Columns); wb.save("output/sortByValue.xlsx"); }
實(shí)現(xiàn)效果如下圖所示:
2. 按圖標(biāo)排序
按圖標(biāo)排序是指基于單元格的條件格式圖標(biāo)執(zhí)行的排序操作。
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"); }
實(shí)現(xiàn)效果如下圖所示:
3. 按字體顏色排序
按字體顏色排序是指根據(jù)單元格的顯示格式和字體顏色執(zhí)行的排序操作。
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"); }
實(shí)現(xiàn)效果如下圖所示:
4. 按背景色排序
按背景顏色排序是指根據(jù)單元格的背景顏色進(jìn)行排序的操作。
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"); }
實(shí)現(xiàn)效果如下圖所示:
5. 根據(jù)自定義序列排序
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"); }
實(shí)現(xiàn)效果如下圖所示:
到此這篇關(guān)于Java實(shí)現(xiàn)精準(zhǔn)Excel數(shù)據(jù)排序的方法詳解的文章就介紹到這了,更多相關(guān)Java Excel數(shù)據(jù)排序內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java GUI圖形界面開(kāi)發(fā)實(shí)現(xiàn)小型計(jì)算器流程詳解
本文章向大家介紹Java GUI圖形界面開(kāi)發(fā)實(shí)現(xiàn)小型計(jì)算器,主要包括布局管理器使用實(shí)例、應(yīng)用技巧、基本知識(shí)點(diǎn)總結(jié)和需要注意事項(xiàng),具有一定的參考價(jià)值,需要的朋友可以參考一下2022-08-08圖解紅黑樹(shù)及Java進(jìn)行紅黑二叉樹(shù)遍歷的方法
紅黑樹(shù)問(wèn)題是各大計(jì)算機(jī)考研命題以及面試算法題目中的熱門(mén),接下來(lái)我們?yōu)榇蠹覉D解紅黑樹(shù)及Java進(jìn)行紅黑二叉樹(shù)遍歷的方法,需要的朋友可以參考下2016-05-05自定義JmsListenerContainerFactory時(shí),containerFactory字段解讀
這篇文章主要介紹了自定義JmsListenerContainerFactory時(shí),containerFactory字段解讀,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07SpringBoot MainApplication類文件的位置詳解
這篇文章主要介紹了SpringBoot MainApplication類文件的位置詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-01-01Java實(shí)現(xiàn)學(xué)生管理系統(tǒng)詳解
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)學(xué)生管理系統(tǒng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助2021-10-10SpringMVC訪問(wèn)controller報(bào)錯(cuò)404的解決辦法(總結(jié)超詳細(xì))
純注解配置SpringMVC程序,使用tomcat8.5.95版本啟動(dòng),能啟動(dòng)成功并且訪問(wèn)index.jsp頁(yè)面,但是訪問(wèn)/save時(shí)出現(xiàn)404無(wú)法訪問(wèn),本文給大家介紹了SpringMVC訪問(wèn)controller報(bào)錯(cuò)404的解決辦法,文章總結(jié)的非常詳細(xì),需要的朋友可以參考下2024-05-05支付寶開(kāi)發(fā)平臺(tái)之第三方授權(quán)登錄與獲取用戶信息
本文主要介紹了第三方授權(quán)登錄與獲取用戶信息的實(shí)例方法,具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧2017-03-03idea 安裝 Mybatis 開(kāi)發(fā)幫助插件 MyBatisCodeHelper-Pro 插件破解版的方法
MyBatisCodeHelper-Pro 插件可以幫助我們快速的開(kāi)發(fā) mybatis,這篇文章給大家介紹idea 安裝 Mybatis 開(kāi)發(fā)幫助插件 MyBatisCodeHelper-Pro 插件破解版的相關(guān)知識(shí),感興趣的朋友跟隨小編一起看看吧2020-09-09Springboot實(shí)現(xiàn)獲取實(shí)時(shí)天氣
這篇文章主要為大家詳細(xì)介紹了如何使用Springboot實(shí)現(xiàn)獲取實(shí)時(shí)天氣功能,文中的示例代碼講解詳細(xì),有需要的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-04-04