日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

前一段時間淘寶出了一個“淘寶人生”的模塊,可以看從注冊淘寶賬號至今的消費記錄,仔細想了想,現在微信、淘寶這些APP好像都喜歡出這種記錄使用者的支付、消費情況的功能。不過這個顯示消費記錄的功能的確讓人覺得方便很多。這樣大家就可可以隨時隨地的查看以前的消費記錄,有時候需要查賬,翻一翻手機就能看見錢都去哪里了,而且每一筆錢的流向都可以看得非常清楚。既然這個東西這么好用,那可不可以自己也搞一個類似的分析工具,這樣就可以用它來記錄生活中的點點滴滴。由于本人的工作性質,對Excel比較熟悉,首先想到的就是可不可以用一個表格可視化工具來實現這個功能。

說干就干,先上網找了找了一些Excel中可視化工具的樣式,看了看在Excel中比較流行就是圖表(柱形圖、條形圖等)和數據透視圖了。因為圖表是平時用的比較多的工具,所以在好奇心的驅使下,百度了一下“如何用代碼在表格中搞一個數據透視圖”,瀏覽著看了看,發現有很多種語言都可以實現(Python、Java、Javascript、.net等)。鑒于自己對Java語言比較熟悉,所以便繼續百度“如何用Java在Excel中搞一個數據透視表”。發現可以使用Apache POI庫來實現:

import org.apache.poi.ss.usermodel.*;

import org.apache.poi.xssf.usermodel.*;

import java.io.FileOutputStream;

import java.io.IOException;

public class PivotTableExample {

public static void main(String[] args) throws IOException {

// 創建工作簿

Workbook workbook = new XSSFWorkbook();

// 創建工作表

Sheet sheet = workbook.createSheet("Data");

// 輸入數據

Row headingRow = sheet.createRow(0);

headingRow.createCell(0).setCellValue("Category");

headingRow.createCell(1).setCellValue("Value");

Row dataRow1 = sheet.createRow(1);

dataRow1.createCell(0).setCellValue("A");

dataRow1.createCell(1).setCellValue(10);

Row dataRow2 = sheet.createRow(2);

dataRow2.createCell(0).setCellValue("B");

dataRow2.createCell(1).setCellValue(20);

Row dataRow3 = sheet.createRow(3);

dataRow3.createCell(0).setCellValue("A");

dataRow3.createCell(1).setCellValue(15);

// 創建數據透視表

XSSFPivotTable pivotTable = ((XSSFSheet) sheet).createPivotTable(new AreaReference("A1:B3", SpreadsheetVersion.EXCEL2007), new CellReference("D5"));

// 設置行標簽

pivotTable.addRowLabel(0);

// 設置值字段

pivotTable.addColumnLabel(DataConsolidateFunction.SUM, 1, "Sum of Value");

// 保存Excel文件

FileOutputStream fileOut = new FileOutputStream("pivotTable.xlsx");

workbook.write(fileOut);

fileOut.close();

System.out.println("數據透視表已創建并保存到文件!");

}

}

除了使用Apache POI庫,還發現了一款商業軟件GcExcel,由于不太不了解這個東西,所以簡單的ChatGpt了一下GcExcel,

查完之后發現,和Apache POI庫一樣,GcExcel同樣也是一個基于Java的表格操作庫,于是懷著好奇的心態,又百度了一下“Java實現GcExcel數據透視表”。找到了一個GcExcel的學習指南,里面有一些源碼和代碼講解,根據里面的入門教程自己寫了一個小的實現數據透視表的Demo(由于完整代碼太長,只截取了部分):

想要完整代碼的童鞋可以從Gitee或Github中“葡萄城技術團隊”主頁內下載:

public class Main {

public static void main(String[] args){

Workbook workbook = new Workbook();

//創建一個WorkSheet的對象

IWorksheet worksheet = workbook.getWorksheets().get(0);

//-----------------------------設置數據值------------------------------

worksheet.getRange("B3:C7").setValue(new Object[][]{

{"ITEM", "AMOUNT"},

{"Income 1", 2500},

{"Income 2", 1000},

{"Income 3", 250},

{"Other", 250},

});

worksheet.getRange("B10:C23").setValue(new Object[][]{

{"ITEM", "AMOUNT"},

{"Rent/mortgage", 800},

{"Electric", 120},

{"Gas", 50},

{"Cell phone", 45},

{"Groceries", 500},

{"Car payment", 273},

{"Auto expenses", 120},

{"Student loans", 50},

{"Credit cards", 100},

{"Auto Insurance", 78},

{"Personal care", 50},

{"Entertainment", 100},

{"Miscellaneous", 50},

});

//合并單元格

worksheet.getRange("B2:C2").merge();

worksheet.getRange("B2").setValue("MonTHLY INCOME");

worksheet.getRange("B9:C9").merge();

worksheet.getRange("B9").setValue("MonTHLY EXPENSES");

worksheet.getRange("E2:G2").merge();

worksheet.getRange("E2").setValue("PERCENTAGE OF INCOME SPENT");

worksheet.getRange("E5:G5").merge();

worksheet.getRange("E5").setValue("SUMMARY");

worksheet.getRange("E3:F3").merge();

worksheet.getRange("E9").setValue("BALANCE");

worksheet.getRange("E6").setValue("Total Monthly Income");

worksheet.getRange("E7").setValue("Total Monthly Expenses");

//--------------------------------設置形狀--------------------------------

IShape shape = worksheet.getShapes().addChart(ChartType.ColumnClustered, 339, 247, 316.5, 346);

shape.getChart().getChartArea().getFormat().getLine().setTransparency(1);

shape.getChart().getColumnGroups().get(0).setOverlap(0);

shape.getChart().getColumnGroups().get(0).setGapWidth(37);

IAxis category_axis = shape.getChart().getAxes().item(AxisType.Category);

category_axis.getFormat().getLine().getColor().setRGB(Color.GetBlack());

category_axis.getTickLabels().getFont().setSize(11);

category_axis.getTickLabels().getFont().getColor().setRGB(Color.GetBlack());

IAxis series_axis = shape.getChart().getAxes().item(AxisType.Value);

series_axis.getFormat().getLine().setWeight(1);

series_axis.getFormat().getLine().getColor().setRGB(Color.GetBlack());

series_axis.getTickLabels().setNumberFormat("$###0");

series_axis.getTickLabels().getFont().setSize(11);

series_axis.getTickLabels().getFont().getColor().setRGB(Color.GetBlack());

ISeries chartSeries = shape.getChart().getSeriesCollection().newSeries();

chartSeries.setFormula("=SERIES(\"Simple Budget\",{\"Income\",\"Expenses\"},'Sheet1'!$G$6:$G$7,1)");

chartSeries.getPoints().get(0).getFormat().getFill().getColor().setRGB(Color.FromArgb(176, 21, 19));

chartSeries.getPoints().get(1).getFormat().getFill().getColor().setRGB(Color.FromArgb(234, 99, 18));

chartSeries.getDataLabels().getFont().setSize(11);

chartSeries.getDataLabels().getFont().getColor().setRGB(Color.GetBlack());

chartSeries.getDataLabels().setShowValue(true);

chartSeries.getDataLabels().setPosition(DataLabelPosition.OutsideEnd);

workbook.save("tutorial.xlsx");

}

}

最終的Excel樣式:

通過以上的實驗,使用Apache POI和GcExcel都可以在Excel中實現數據透視表,您可以根據您項目或工程的需要選擇合適的方法。

分享到:
標簽:如何使用幾行代碼在報表中實現一個數據透視表(Java版) 熱點資訊
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定