自定义目录标题)

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

梳理一下思路:
首先使用POI读取excel第一个sheet页,在sheet页中获取到图表饼状图或圆环图,修改图形数据并修改选值范围达到自己需要的表格。

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为圆环图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();}}/*** 饼状图圆环图导出* @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);/*创建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);//圆环图}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);//必须是数字类型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数据处理*/String fileName = "";//初始统计图名称为: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图表模板,修改选值范围相关推荐

  1. java读取excel某个单元格的值_java poi怎么获取excel单元格的内容

    展开全部 package edu.sjtu.erplab.poi; import java.io.InputStream&ch=ww.xqy.chain" target=" ...

  2. java读取excel某个单元格的值_[转载]Java读取Excel中的单元格数据

    目前网上能找到的读取Excel表格中数据的两种比较好的方案:PageOffice好用开发效率高:POI免费.供大家参考,针对具体情况选择具体方案. 1. PageOffice读取excel impor ...

  3. java 读取excel模板_java如何读取excel表格的信息,java读取excel模板

    java如何读取excel表格的信息Java如何读取excel表格的信息,用java读取excel表格信息的方法:1.pass [workbook.getworkbook(新文件(' e ://exc ...

  4. Flex通过Java读取Excel(详细流程)----Excel在客户端(DataGrid动态根据Excel生成)

    2011-03-06 23:57:00|  分类: flex/flash |  标签:excel  flex  java  客户端  as3xls   |字号大中小  订阅 在网上查了很久的资料,就是 ...

  5. Java读取Excel,03版本和07版本

    文章目录 java读取Excel 读取Excel的计算公式 java读取Excel 采用poi,这里有个知识点,03版本和07版本的Excel是有区别的,03的最多只有65536行,07的无限制 读取 ...

  6. Java读取excel指定行列的数据(通过jxl的方式)

    目录 Java读取Excel指定列的数据详细教程和注意事项(通过jxl的方式) 1.前言 2.注意事项 3.主要的API说明 4.示例代码 Java读取Excel指定列的数据详细教程和注意事项(通过j ...

  7. Java读取excel工资单发送邮件

    帮蕊姐姐完成一个任务,给几百号人发邮件,索性把以前写过的Javamail和读excel的代码调通了.下面简单记录一下. Java发送邮件 MyAuthenticator.java package co ...

  8. java读取excel(java读取excel表格存入数据库)

    怎么用java读取excel 里面的数据 * excel文件的读入和更新 * 使用的是jxl 技术. public static void main(String[] args) throws Row ...

  9. 从java读取Excel继续说大道至简 .

    在上一篇博客<从复杂到简单,大道至简>中说道我们要把复杂的问题简单化,也就是要把问题细分,让大问题变成小问题,这样解决起来会相对容易,当我们把容易的小问题解决掉了,大问题自动就会迎刃而解. ...

  10. JAVA读取Excel表格,建数据库建表,并生成java实体实例

    转自:https://blog.csdn.net/wuyongde_0922/article/details/43233413 JAVA读取Excel表格,建数据库建表,并生成java实体实例,这一篇 ...

最新文章

  1. 模糊测试工具Simple Fuzzer
  2. 为人父母始知天下事---“宝宝哭了”的问题来说说什么是分析,什么是设计
  3. 置顶 | 2019学习单/读书单(dream a little dream)
  4. 帧、场编码的个人理解
  5. EOJ_1024_表达式
  6. .NET Core3发布Json API
  7. docker部署mysql项目_Docker部署项目步骤
  8. 怎么用命令启动服务器文件,linux启动服务器命令
  9. python编写一个弹球游戏_Python实战案例:用Python写一个弹球游戏,就是这么强
  10. php数组实例,PHP数组实例总结及说明
  11. 使用表单传递参数,request处理参数出现未将对象引用设置到对象的实例
  12. vscode保存代码,自动按照eslint规范格式化代码设置
  13. 远程访问用户 Kindle---通过电子书实现控制
  14. 迪杰斯特拉模板-刘汝佳紫书
  15. 2021软科 中国计算机专业 排名
  16. Difference-Guided Representation LearningNetwork for Multivariate Time-SeriesClassification(TCYB)
  17. c语言 平均差 标准差,平均差与标准差计算公式中的平均数是()。
  18. Python报错ModuleNotFoundError: No module named ‘pyqtgraph‘
  19. C语言入门 | c语言基础知识
  20. 【Build】关于-fPIC, -fpic, -fpie, -fPIE的一点理解

热门文章

  1. 键盘手机JAVA模拟器下载_手机java模拟器
  2. Winform UI界面设计例程——ListView控件
  3. Zipkin jar 下载地址
  4. 熊猫源码(不是很全,大体框架是有的)小时候一直想做的一个东西哈哈哈
  5. 利用动软代码生成器-------.net链接SQl数据库
  6. Roguelike游戏-《灾前世界》个人游戏策划案
  7. 使用花生壳6.5客户端FTP设置
  8. [笔记]三维激光SLAM学习——LiDAR里程计原理推导代码实现
  9. 运输问题---表上作业法
  10. 卧槽,入职 3 天就“偷”代码,备份 6300 个 Python 脚本,不讲武德啊