歡迎您光臨本站 註冊首頁

Java在Excel中創建多級分組、摺疊或展開分組的實現

←手機掃碼閱讀     madbeef @ 2020-06-08 , reply:0

本文介紹通過Java程序在Excel創建分組的方法,可對行或列分組進行分組並設置明細數據是否展開或摺疊。設置數據分組並展開或摺疊時,可通過以下方法:
 

方法一:
 

通過方法sheet.groupByRows(int firstRow, int lastRow, boolean isCollapsed)設置行分組;通過方法sheet.groupByColumns(int firstColumnm, int lastColumn, boolean isCollapsed)設置列分組。
 

方法二:
 

通過方法sheet.getCellRange(String name).groupByRows(boolean isCollapsed)設置行分組;通過方法sheet.getCellRange(String name).groupByColumns(boolean isCollapsed)設置列分組。
 下面將通過Java代碼示例展示具體實現方法。

使用工具:Free Spire.XLS for Java(免費版)
 

Jar包獲取及導入:可通過官網下載jar包,並解壓,將lib文件夾下的Spire.Xls.jar導入Java程序;或者通過Maven倉庫下載導入。

Java代碼示例

示例1,通過方法一來實現:

  import com.spire.xls.*;    import java.awt.*;    public class MultiLevelGroup_XLS {    public static void main(String[] args) {      //創建工作簿      Workbook wb = new Workbook();      //獲取第一個工作表      Worksheet sheet = wb.getWorksheets().get(0);        //將數據寫入單元格,並設置單元格樣式      sheet.get("A1").setValue("A項目--項目計劃");      sheet.get("A1").getStyle().getFont().setColor(new Color(0,0,255));      sheet.get("A1").getStyle().getFont().isBold(true);      sheet.get("B1").setValue("B項目--項目計劃");      sheet.get("B1").getStyle().getFont().setColor(new Color(255,127,80));      sheet.get("B1").getStyle().getFont().isBold(true);      sheet.get("C1").setValue("C項目--項目計劃");      sheet.get("C1").getStyle().getFont().setColor(new Color(50,205,50));      sheet.get("C1").getStyle().getFont().isBold(true);      sheet.get("A1:C1").autoFitColumns();//設置自適應列      sheet.get("A3").setValue("準備");      sheet.get("A3").getStyle().getFont().setColor(new Color(0,0,255));      sheet.get("A4").setValue("任務 1");      sheet.get("A5").setValue("任務 2");      sheet.getCellRange("A4:A5").borderAround(LineStyleType.Thin);      sheet.getCellRange("A4:A5").borderInside(LineStyleType.Thin);      sheet.get("A7").setValue("啟動");      sheet.get("A7").getStyle().getFont().setColor(new Color(0,0,255));      sheet.get("A8").setValue("任務 1");      sheet.get("A9").setValue("任務 2");      sheet.getCellRange("A8:A9").borderAround(LineStyleType.Thin);      sheet.getCellRange("A8:A9").borderInside(LineStyleType.Thin);        //在isSummaryRowBelow方法中傳入參數false,意思是將明細數據顯示在下方      sheet.getPageSetup().isSummaryRowBelow(false);        //使用groupByRows方法對行進行分組,並設置分組展開或摺疊      sheet.groupByRows(2,9,false);//按行分組,並展開第2行至第9行      sheet.groupByRows(4,5,false);      sheet.groupByRows(8,9,true);//按行分組,並摺疊第8行和第9行      sheet.groupByColumns(2,3,false);//按列分組,並展開第2列和第3列        //保存文檔      wb.saveToFile("NestedGroup.xlsx", ExcelVersion.Version2013);      wb.dispose();    }  }

 

創建結果:
 

示例2,通過方法二來實現:

  import com.spire.xls.*;    public class ExpandAndCollapseGroups {    public static void main(String[] args) {      //加載文檔      Workbook wb =new Workbook();      wb.loadFromFile("NestedGroup.xlsx");        //獲取工作表      Worksheet sheet = wb.getWorksheets().get(0);        //獲取單元格設置分組摺疊、展開      sheet.getCellRange("A8:A9").groupByRows(false);//分組展開單元格所在行      sheet.getCellRange("A4:A5").groupByRows(true);//分組摺疊單元格所在行      sheet.getCellRange("B1:C1").groupByColumns(true);//分組摺疊單元格所在列        //保存文檔      wb.saveToFile("ExpandOrCollapseGroup.xlsx",FileFormat.Version2013);      wb.dispose();    }  }

 

設置效果前後對比:
 

        


[madbeef ] Java在Excel中創建多級分組、摺疊或展開分組的實現已經有252次圍觀

http://coctec.com/docs/java/show-post-237493.html