亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java實戰(zhàn)之利用POI生成Excel圖表

 更新時間:2025年02月27日 14:44:29   作者:小洋酸q糖  
Apache POI是Java生態(tài)中處理Office文檔的核心工具,這篇文章主要為大家詳細介紹了如何在Excel中創(chuàng)建折線圖,柱狀圖,餅圖等常見圖表,需要的可以參考下

Apache POI是Java生態(tài)中處理Office文檔的核心工具,支持Excel圖表的動態(tài)生成與數(shù)據(jù)綁定。本文以POI 5.x版本為例,詳解如何在Excel中創(chuàng)建折線圖、柱狀圖、餅圖等常見圖表,并提供代碼示例與最佳實踐。

一、環(huán)境配置與依賴管理

使用POI生成圖表需引入以下核心依賴(以Maven為例):

<dependency>  
    <groupId>org.apache.poi</groupId>  
    <artifactId>poi-ooxml</artifactId>  
    <version>5.2.3</version>  
</dependency>  

注意:POI 5.x版本與舊版本(如3.x)API差異較大,需避免依賴沖突

二、數(shù)據(jù)源準備與工作表構建

創(chuàng)建工作簿與工作表

XSSFWorkbook workbook = new XSSFWorkbook();  
XSSFSheet sheet = workbook.createSheet("數(shù)據(jù)表");  

填充數(shù)據(jù)

以國家GDP數(shù)據(jù)為例,首行寫入國家名稱,后續(xù)行填充數(shù)值:

// 創(chuàng)建標題行  
Row headerRow = sheet.createRow(0);  
headerRow.createCell(0).setCellValue("國家");  
headerRow.createCell(1).setCellValue("俄羅斯");  
headerRow.createCell(2).setCellValue("中國");  
// 填充數(shù)據(jù)行  
Row dataRow = sheet.createRow(1);  
dataRow.createCell(0).setCellValue("GDP(萬億美元)");  
dataRow.createCell(1).setCellValue(1.78);  
dataRow.createCell(2).setCellValue(17.96);  

三、圖表生成核心步驟

1. 折線圖(Line Chart)

// 定義圖表位置與尺寸  
XSSFDrawing drawing = sheet.createDrawingPatriarch();  
XSSFClientAnchor anchor = drawing.createAnchor(0, 0, 0, 0, 0, 5, 10, 20);  

// 創(chuàng)建圖表對象  
XSSFChart chart = drawing.createChart(anchor);  
chart.setTitleText("國家GDP趨勢分析");  

// 綁定數(shù)據(jù)源  
XDDFDataSource<String> countries = XDDFDataSourcesFactory.fromStringCellRange(sheet, new CellRangeAddress(0, 0, 1, 2));  
XDDFNumericalDataSource<Double> values = XDDFDataSourcesFactory.fromNumericCellRange(sheet, new CellRangeAddress(1, 1, 1, 2));  

// 配置坐標軸與樣式  
XDDFCategoryAxis xAxis = chart.createCategoryAxis(AxisPosition.BOTTOM);  
XDDFValueAxis yAxis = chart.createValueAxis(AxisPosition.LEFT);  
XDDFLineChartData data = (XDDFLineChartData) chart.createData(ChartTypes.LINE, xAxis, yAxis);  

// 添加數(shù)據(jù)系列并渲染  
XDDFLineChartData.Series series = data.addSeries(countries, values);  
series.setTitle("GDP", null);  
chart.plot(data);  

關鍵點:通過CellRangeAddress綁定數(shù)據(jù)區(qū)域,支持動態(tài)擴展

2. 柱狀圖(Bar Chart)

柱狀圖與折線圖代碼結構類似,僅需修改圖表類型與樣式:

XDDFBarChartData data = (XDDFBarChartData) chart.createData(ChartTypes.BAR, xAxis, yAxis);  

可通過XDDFShapeProperties自定義柱體顏色與間距

3. 餅圖(Pie Chart)

餅圖需單獨設置數(shù)據(jù)標簽與百分比顯示:

XDDFPieChartData data = (XDDFPieChartData) chart.createData(ChartTypes.PIE, null, null);  
XDDFPieChartData.Series series = data.addSeries(countries, values);  
chart.plot(data);  
// 啟用百分比標簽  
chart.getCTChart().getPlotArea().getPieChartArray(0).addNewDLbls().addNewShowPercent().setVal(true);  

四、常見問題與優(yōu)化

1.圖表位置偏移

通過XSSFClientAnchor參數(shù)調(diào)整坐標(如col1, row1, col2, row2)控制圖表位置

2.數(shù)據(jù)動態(tài)更新

使用CellRangeAddress動態(tài)擴展數(shù)據(jù)范圍,避免硬編碼。例如:

CellRangeAddress valuesRange = new CellRangeAddress(1, 1, 1, sheet.getRow(1).getLastCellNum());  

3.樣式自定義

  • 坐標軸標題xAxis.setTitle("國家")
  • 圖例位置chart.getOrAddLegend().setPosition(LegendPosition.TOP_RIGHT)
  • 顏色設置:通過XDDFSolidFillProperties指定RGB值 

五、總結

通過POI生成Excel圖表的核心在于數(shù)據(jù)綁定API靈活調(diào)用。開發(fā)者需注意:

  • 數(shù)據(jù)區(qū)域需與圖表類型匹配(如分類軸與數(shù)值軸);
  • 高版本POI(≥5.0)推薦使用XDDF系列API,兼容性更強;
  • 復雜圖表建議封裝工具類(如ChartUtils)提升代碼復用性

到此這篇關于Java實戰(zhàn)之利用POI生成Excel圖表的文章就介紹到這了,更多相關Java POI生成Excel內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Java實現(xiàn)八個常用的排序算法:插入排序、冒泡排序、選擇排序、希爾排序等

    Java實現(xiàn)八個常用的排序算法:插入排序、冒泡排序、選擇排序、希爾排序等

    這篇文章主要介紹了Java如何實現(xiàn)八個常用的排序算法:插入排序、冒泡排序、選擇排序、希爾排序 、快速排序、歸并排序、堆排序和LST基數(shù)排序,需要的朋友可以參考下
    2015-07-07
  • SpringBoot + Spring Cloud Consul 服務注冊和發(fā)現(xiàn)詳細解析

    SpringBoot + Spring Cloud Consul 服務注冊和發(fā)現(xiàn)詳細解析

    這篇文章主要介紹了SpringBoot + Spring Cloud Consul 服務注冊和發(fā)現(xiàn),本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-07-07
  • Java實現(xiàn)的DES加密解密工具類實例

    Java實現(xiàn)的DES加密解密工具類實例

    這篇文章主要介紹了Java實現(xiàn)的DES加密解密工具類,結合具體實例形式分析了Java實現(xiàn)的DES加密解密工具類定義與使用方法,需要的朋友可以參考下
    2017-09-09
  • Java詳細分析sleep和wait方法有哪些區(qū)別

    Java詳細分析sleep和wait方法有哪些區(qū)別

    這篇文章主要介紹了Java中wait與sleep的講解(wait有參及無參區(qū)別),通過代碼介紹了wait()?與wait(?long?timeout?)?區(qū)別,wait(0)?與?sleep(0)區(qū)別,需要的朋友可以參考下
    2022-04-04
  • Spring注解@Resource和@Autowired區(qū)別對比詳解

    Spring注解@Resource和@Autowired區(qū)別對比詳解

    這篇文章主要介紹了Spring注解@Resource和@Autowired區(qū)別對比詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-09-09
  • 使用Servlet Filter實現(xiàn)系統(tǒng)登錄權限

    使用Servlet Filter實現(xiàn)系統(tǒng)登錄權限

    這篇文章主要為大家詳細介紹了使用Servlet Filter實現(xiàn)系統(tǒng)登錄權限,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • Java軟件設計模式之適配器模式詳解

    Java軟件設計模式之適配器模式詳解

    這篇文章主要介紹了Java軟件設計模式之適配器模式詳解,適配器模式可分為對象適配器和類適配器兩種,在對象適配器模式中,適配器與適配者之間是關聯(lián)關系;在類適配器模式中,適配器與適配者之間是繼承(或實現(xiàn))關系,需要的朋友可以參考下
    2023-07-07
  • mybatis如何使用truncate清空表

    mybatis如何使用truncate清空表

    這篇文章主要介紹了mybatis如何使用truncate清空表,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • 當Mybatis遇上目錄樹超全完美解決方案

    當Mybatis遇上目錄樹超全完美解決方案

    這篇文章主要介紹了當Mybatis遇上目錄樹有哪些解決方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-04-04
  • Springboot如何使用Aspectj實現(xiàn)AOP面向切面編程

    Springboot如何使用Aspectj實現(xiàn)AOP面向切面編程

    這篇文章主要介紹了Springboot如何使用Aspectj實現(xiàn)AOP面向切面編程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01

最新評論