日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java读取excel图表模板,修改选值范围

發(fā)布時間:2023/12/10 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java读取excel图表模板,修改选值范围 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

自定義目錄標題)

java讀取excel圖表模板,修改選值范圍

梳理一下思路:
首先使用POI讀取excel第一個sheet頁,在sheet頁中獲取到圖表餅狀圖或圓環(huán)圖,修改圖形數(shù)據(jù)并修改選值范圍達到自己需要的表格。

package com.adc.da.util.utils;import org.apache.poi.POIXMLDocumentPart; import org.apache.poi.ss.usermodel.BorderStyle; import org.apache.poi.ss.usermodel.HorizontalAlignment; import org.apache.poi.ss.usermodel.VerticalAlignment; import org.apache.poi.ss.util.CellRangeAddress; import org.apache.poi.xssf.usermodel.*; import org.openxmlformats.schemas.drawingml.x2006.chart.*; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.FileInputStream; import java.io.OutputStream; import java.util.ArrayList; import java.util.Date; import java.util.List;/*** @Author: zhengxz* @Date: 2019/11/11 13:54*/ public class ExportExcel {public static void main(String[]args){List<List<Object>> list = new ArrayList<>();List<Object> list_0 = new ArrayList<>();List<Object> list_1 = new ArrayList<>();HttpServletRequest request = null;HttpServletResponse response = null;//1為餅狀圖2為圓環(huán)圖String type = "1";list_0.add("");list_0.add("Estate");list_0.add("Hatchback");list_0.add("MPV");list_0.add("Sedan");list_0.add("SUV");list_0.add("VAN");list_1.add("單價");list_1.add(0.6);list_1.add(9.4);list_1.add(12.3);list_1.add(35.5);list_1.add(41.4);list_1.add(0.9);list.add(list_0);list.add(list_1);try {pieExcel(request,response,type,list);} catch (Exception e) {e.printStackTrace();}}/*** 餅狀圖圓環(huán)圖導出* @param request* @param response* @param type* @throws Exception* @author: zhengxz* @time: 2019/11/11 11:34*/public static void pieExcel(HttpServletRequest request, HttpServletResponse response,String type,List<List<Object>> list) throws Exception {//加載圖表模版String filePath =null;if("1".equals(type)){filePath = "template/excel/pie.xlsx";}else if("2".equals(type)){filePath = "template/excel/donut.xlsx";}File file = new File(filePath);FileInputStream tps = new FileInputStream(file);/*創(chuàng)建excel*/XSSFWorkbook wb = new XSSFWorkbook(tps);XSSFSheet sheet = wb.getSheetAt(0);//設置全局 行寬sheet.setDefaultColumnWidth((short) (15));/*excel屬性*/XSSFCellStyle cs = setStyle(wb);XSSFFont font = wb.createFont();//設置字體格式font.setFontName("宋體");/*字體大小*/font.setFontHeightInPoints((short) 11);cs.setFont(font);//遍歷第一頁元素找到圖表XSSFChart chart;XSSFDrawing drawingPatriarch = sheet.getDrawingPatriarch();//拿到圖形List<XSSFChart> charts = drawingPatriarch.getCharts();chart = charts.get(0);POIXMLDocumentPart xlsPart = chart.getRelations().get(0);CTChart ctChart = chart.getCTChart();CTPlotArea plotArea = ctChart.getPlotArea();// 獲取圖表的系列CTPieSer ser = null;//判斷是什么圖形if("1".equals(type)){//餅狀圖CTPieChart pieChartArray = plotArea.getPieChartArray(0);ser = pieChartArray.getSerArray(0);//圓環(huán)圖}else if("2".equals(type)){CTDoughnutChart doughnutChartArray = plotArea.getDoughnutChartArray(0);ser = doughnutChartArray.getSerArray(0);}CTSerTx tx = ser.getTx();tx.getStrRef().getStrCache().getPtArray(0).setV("ddd");CTAxDataSource cat = ser.getCat();CTStrData strData = cat.getStrRef().getStrCache();//獲取圖表的值CTNumDataSource val = ser.getVal();CTNumData numData = val.getNumRef().getNumCache();strData.setPtArray(null); // unset old axis textnumData.setPtArray(null); // unset old values// set modelint idx = 0;int rownum = 0;XSSFRow row_0 = sheet.createRow(0);XSSFRow row_1 = sheet.createRow(1);for (int i = 0; i < list.get(0).size(); i++) {CTNumVal numVal = numData.addNewPt();numVal.setIdx(idx);numVal.setV(list.get(0).get(i).toString());CTStrVal sVal = strData.addNewPt();sVal.setIdx(idx);sVal.setV(list.get(1).get(i).toString());idx++;rownum++;row_0.createCell(i).setCellValue(list.get(0).get(i).toString());Object o = list.get(1).get(i);//必須是數(shù)字類型if(o instanceof Double){row_1.createCell(i).setCellValue((Double) o);}else {row_1.createCell(i).setCellValue((String) o);}}numData.getPtCount().setVal(idx);strData.getPtCount().setVal(idx);String numDataRange = new CellRangeAddress(1, 1, 1, rownum-1).formatAsString(sheet.getSheetName(), true);val.getNumRef().setF(numDataRange);String axisDataRange = new CellRangeAddress(0, 0, 1, rownum-1).formatAsString(sheet.getSheetName(), true);cat.getStrRef().setF(axisDataRange);//更新嵌入的workbookOutputStream xlsOut = xlsPart.getPackagePart().getOutputStream();wb.write(xlsOut);xlsOut.close();/*導出excel數(shù)據(jù)處理*/String fileName = "";//初始統(tǒng)計圖名稱為:csvYYYYMMDDString nowDateStr = DateUtils.dateToString(new Date(), "yyyyMMdd");String excelName = "";excelName = fileName + nowDateStr;String headStr = "attachment; filename=" + excelName + ".xlsx";response.setHeader("Content-Disposition", headStr);ServletOutputStream out = response.getOutputStream();wb.write(out);out.close();}/*** 設置表格風格* @param wb* @return* @author: zhengxz* @time: 2019/11/8 9:01*/public static XSSFCellStyle setStyle(XSSFWorkbook wb){XSSFCellStyle cs = wb.createCellStyle();cs.setAlignment(HorizontalAlignment.CENTER);cs.setVerticalAlignment(VerticalAlignment.CENTER);cs.setBorderBottom(BorderStyle.THIN);//下邊框cs.setBorderLeft(BorderStyle.THIN);//左邊框cs.setBorderRight(BorderStyle.THIN);//右邊框cs.setBorderTop(BorderStyle.THIN);//上邊框cs.setAlignment(HorizontalAlignment.CENTER_SELECTION);//左右居中cs.setVerticalAlignment(VerticalAlignment.CENTER);//上下居中cs.setWrapText(true);return cs;} }

總結

以上是生活随笔為你收集整理的java读取excel图表模板,修改选值范围的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。