private void drawLine1(Sheet sheetAt0,String title,List<ContractSpotInfoVo> list,List<ContractVO> contractVOList){ if(list == null || list.size() == 0)return; //这里绘制散点图 XSSFDrawing drawing = (XSSFDrawing) sheetAt0.createDrawingPatriarch(); //前偏移量四个默认0 XSSFClientAnchor anchor = drawing.createAnchor(0, 0, 0, 0, 0, 48, 12, 67); //创建一个chart对象 XSSFChart chart = drawing.createChart(anchor); //标题 chart.setTitleText(title); //标题是否覆盖图表 chart.setTitleOverlay(false); // X轴 XDDFCategoryAxis xAxis = chart.createCategoryAxis(AxisPosition.BOTTOM); xAxis.setMajorTickMark(AxisTickMark.NONE);// x轴刻度线 // Y轴 XDDFValueAxis yAxis = chart.createValueAxis(AxisPosition.LEFT); yAxis.setMajorTickMark(AxisTickMark.NONE);// y轴刻度线 yAxis.setTitle("MWh"); xAxis.crossAxis(yAxis); yAxis.crossAxis(xAxis); XDDFLineChartData line = (XDDFLineChartData) chart.createData(ChartTypes.LINE, xAxis, yAxis); Map<String, List<ContractSpotInfoVo>> collect = list.stream().collect(Collectors.groupingBy(ContractSpotInfoVo::getInfoTime)); List<String> xArray = new ArrayList<>(); List<BigDecimal> yArray1 = new ArrayList<>(); List<BigDecimal> yArray2 = new ArrayList<>(); List<BigDecimal> yArray3 = new ArrayList<>(); collect.entrySet().stream().sorted((o1,o2)->{ return o1.getKey().compareTo(o2.getKey()); }).forEach(item->{ MxContractAnalyse2TableVo convert = convert(item.getValue(),contractVOList); if(convert == null)return; xArray.add(item.getKey()!=null?item.getKey().substring(0,5):""); yArray1.add(Optional.ofNullable(convert.getContractPower()).orElse(BigDecimal.ZERO));//合约电量 yArray2.add(Optional.ofNullable(convert.getContractPrice()).orElse(BigDecimal.ZERO));//合约电价 yArray3.add(Optional.ofNullable(convert.getSpotPrice()).orElse(BigDecimal.ZERO));//现货电价 }); XDDFCategoryDataSource x = XDDFDataSourcesFactory.fromArray(xArray.toArray(new String[]{})); XDDFLineChartData.Series series1 = (XDDFLineChartData.Series) line.addSeries(x, XDDFDataSourcesFactory.fromArray(yArray1.toArray(new BigDecimal[]{}))); series1.setTitle("合约电量",null); series1.setSmooth(false); series1.setMarkerSize((short)2); chart.plot(line); XDDFValueAxis yAxis2 = chart.createValueAxis(AxisPosition.RIGHT); yAxis2.setMajorTickMark(AxisTickMark.NONE);// y轴刻度线 xAxis.crossAxis(yAxis2); yAxis2.crossAxis(xAxis); yAxis2.setCrosses(AxisCrosses.MAX); yAxis2.setTitle("元/MWh"); XDDFLineChartData line2 = (XDDFLineChartData) chart.createData(ChartTypes.LINE, xAxis, yAxis2); XDDFLineChartData.Series series2 = (XDDFLineChartData.Series) line2.addSeries(x, XDDFDataSourcesFactory.fromArray(yArray2.toArray(new BigDecimal[]{}))); series2.setTitle("合约电价",null); series2.setSmooth(false); series2.setMarkerSize((short)2); XDDFLineChartData.Series series3 = (XDDFLineChartData.Series) line2.addSeries(x, XDDFDataSourcesFactory.fromArray(yArray3.toArray(new BigDecimal[]{}))); series3.setTitle("现货电价",null); series3.setSmooth(false); series3.setMarkerSize((short)2); //图例位置 XDDFChartLegend legend = chart.getOrAddLegend(); legend.setPosition(LegendPosition.BOTTOM); // 样式线 XDDFLineProperties line123 = new XDDFLineProperties(); line123.setFillProperties(new XDDFSolidFillProperties(XDDFColor.from(new byte[] {(byte)228,(byte)231,(byte)237}))); line123.setWidth(0.5); XDDFShapeProperties yGridProperties = yAxis.getOrAddMajorGridProperties(); yGridProperties.setLineProperties(line123); chart.plot(line2); }
相关推荐
本篇文章将详细介绍如何利用Java和Apache POI库向Excel工作表中插入图片。 首先,我们需要理解Apache POI的工作原理。POI提供了一个名为HSSFPatriarch的类,它是Excel中的图形绘制容器,可以用于插入图片。对于....
在Java编程环境中,实现将图片插入到Excel文件中是一项常见的任务,特别是在数据分析、报表生成或者自动化办公场景下。本文将详细讲解如何使用Java来完成这一功能,主要涉及到Apache POI库的应用。 Apache POI是一...
首先,需要创建一个Drawings对象,然后使用Drawings对象的addPicture方法将图片添加到Excel中。 3. 使用Java POI下载Excel文件 在示例代码中,使用了HttpServletResponse对象将Excel文件下载到客户端。首先,需要...
在Java编程中,导出Excel是一项常见的...通过上述步骤,你可以创建一个能处理带图片的Excel导出的Java程序,适用于各种业务场景。当然,具体的实现代码会涉及更多的细节和具体操作,但以上知识点提供了一个全面的概览。
java操作excel实现水印图片
在Java编程中,导出数据到Excel是一种常见的需求,尤其当需要将图片与文本一起展示在电子表格中时。这个任务通常涉及到使用第三方库来处理Excel文件,因为Java标准库并未提供直接支持图像到Excel的功能。以下是一些...
在Java编程中,将图片写入Excel文件是一项常见的任务,特别是在数据分析、报表生成或数据可视化的情景下。这里,我们将详细探讨如何实现这个功能,主要依赖于`Apache POI`库来操作Excel,并结合`JFreeChart`库来创建...
在Java编程环境中,将Excel表格转换为PNG图片是一项常见的需求,尤其在数据可视化或报告生成时。本篇文章将深入探讨如何使用Java实现这一功能,主要涉及Apache POI库的运用和其他相关技术。 Apache POI是一个强大的...
本教程将详细介绍如何使用JAVA POI库来创建一个包含图片的完整Excel导出功能。 首先,你需要在项目中引入Apache POI依赖。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```xml <groupId>org.apache....
在Java编程中,处理Excel文件是一项常见的任务,无论是读取数据、创建新的Excel工作簿,还是向其中插入文字和图片,都有成熟的库可以支持。本篇文章将深入探讨如何使用Java来实现这些功能。 首先,我们需要引入一个...
你需要创建一个Workbook对象,添加Sheet,然后在Sheet中插入图片,这些图片就是生成的二维码。 4. **图像到Excel的转换**: `MatrixToImageWriter.java`可能实现了将二维码的矩阵数据转换为图像文件的过程。通常,...
在Java编程中,生成Excel文件是一项常见的任务,特别是在数据处理、报表生成或导出功能中。本篇文章将深入探讨如何使用Java来创建Excel文件,并基于提供的标签“源码”和“工具”分享一些实用的方法。 首先,Java...
Java Excel API,通常指的是jxl库,是一个广泛使用的开源Java库,用于读写Microsoft Excel文件。这个库使得在Java程序中处理Excel数据变得极其便捷,无论是读取现有的工作簿、创建新的工作簿,还是修改现有表格,jxl...
### Java中将数据和图片导出到Excel文件 在Java编程环境下实现数据及图片导出至Excel文件是一项常见的任务,特别是在处理报表、数据分析等场景时。本文将详细解析如何通过Java代码来完成这一过程,包括如何创建...
本篇将详细讲解如何利用Aspose.Cells来实现Java中Excel到PDF的转换,以及处理包含图片的单元格。 首先,你需要在项目中引入Aspose.Cells的依赖。如果使用Maven,可以在pom.xml文件中添加如下依赖: ```xml ...
本文将详细介绍如何使用Java实现Excel的生成,包括插入图片、添加特殊字符如复选框样式,以及在一个单元格内设置多种字体。我们将主要讨论Apache POI库,这是一个流行的Java API,用于读写Microsoft Office格式的...
### 使用JavaExcel (jxl)库进行Excel文件的读取与写入 #### 一、简介 在实际项目开发过程中,经常会遇到需要处理Excel文件的需求。对于Java开发者来说,使用`JavaExcel (jxl)`库可以高效地实现对Excel文件的操作。...
在Java项目中,你需要在pom.xml文件中添加Apache POI的相关依赖,例如: ```xml <groupId>org.apache.poi <artifactId>poi <version>4.1.2 <groupId>org.apache.poi <artifactId>poi-ooxml <version>4.1.2...
在Java编程中,导出数据到Excel是一种常见的需求,特别是在数据分析、报表生成或者数据交换的场景下。这个“java数据excel导出小Demo”可能是为了展示如何使用Java库来实现这一功能。在这个简短的教程中,我们将探讨...
- **公式和图表**:POI也支持添加公式和创建图表,但需要遵循Excel的规则。 5. **在Java Web环境中的应用**:在Web环境中,用户可能通过点击按钮触发导出操作,这需要将上述步骤封装到一个服务方法中,然后在前端...