首页 > 编程语言 >如何使用java生成 Excel 股票图?

如何使用java生成 Excel 股票图?

时间:2023-12-13 21:05:00浏览次数:38  
标签:java org Excel chart 生成 new Date import

要使用Java生成Excel股票图,可以使用POI库来操作Excel文件,使用JFreeChart库来生成股票图。

首先,确保已经添加了以下依赖库:

  • Apache POI
  • JFreeChart
  • JCommon

下面是一个简单的示例代码,用于生成一个包含股票图的Excel文件:

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtils;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.DateAxis;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.CandlestickRenderer;
import org.jfree.data.xy.DefaultHighLowDataset;

import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Date;

public class ExcelStockChart {
    public static void main(String[] args) throws IOException {
        // 创建一个新的Excel工作簿
        Workbook workbook = new XSSFWorkbook();
        Sheet sheet = workbook.createSheet("Stock Data");

        // 创建股票数据,这里的数据是示例数据,实际应用中需要替换成真实的股票数据
        Object[][] stockData = {
                {new Date(119, 0, 1), 100.0, 105.0, 95.0, 98.0},
                {new Date(119, 0, 2), 95.0, 110.0, 92.0, 105.0},
                {new Date(119, 0, 3), 105.0, 120.0, 100.0, 110.0},
                {new Date(119, 0, 4), 110.0, 115.0, 105.0, 112.0},
                {new Date(119, 0, 5), 112.0, 118.0, 108.0, 115.0}
        };

        // 创建股票数据集
        DefaultHighLowDataset dataset = new DefaultHighLowDataset(
                "Stock Data",
                stockData.length,
                new String[]{"Date", "Open", "High", "Low", "Close"},
                stockData
        );

        // 创建股票图
        JFreeChart chart = ChartFactory.createCandlestickChart(
                "Stock Chart",
                "Date",
                "Value",
                dataset,
                false
        );

        // 设置股票图的属性
        XYPlot plot = (XYPlot) chart.getPlot();
        CandlestickRenderer renderer = (CandlestickRenderer) plot.getRenderer();
        renderer.setUseOutlinePaint(true);
        DateAxis dateAxis = (DateAxis) plot.getDomainAxis();
        dateAxis.setDateFormatOverride(new java.text.SimpleDateFormat("yyyy-MM-dd"));

        // 将股票图绘制到Excel文件中
        int width = 600;
        int height = 400;
        ChartUtils.writeChartAsPNG(new FileOutputStream("stock_chart.png"), chart, width, height);

        // 将PNG图像插入到Excel文件中
        Drawing<?> drawing = sheet.createDrawingPatriarch();
        ClientAnchor anchor = drawing.createAnchor(0, 0, 0, 0, 0, 1, 10, 20);
        Picture picture = drawing.createPicture(anchor, workbook.addPicture(
                ChartUtils.encodeAsPNG(chart.createBufferedImage(width, height)), Workbook.PICTURE_TYPE_PNG
        ));
        picture.resize();

        // 保存Excel文件
        FileOutputStream fileOut = new FileOutputStream("stock_chart.xlsx");
        workbook.write(fileOut);
        fileOut.close();

        System.out.println("Excel股票图生成成功!");
    }
}

上述代码将生成一个包含股票图的Excel文件,并保存为"stock_chart.xlsx"。图表的数据可以根据实际情况进行修改,具体的图表设置可以根据需求进行调整。

标签:java,org,Excel,chart,生成,new,Date,import
From: https://blog.51cto.com/M82A1/8806021

相关文章

  • 无涯教程-Java - min()函数
    该方法给出两个参数中较小的一个。参数可以是int,float,long,double。min()-语法此方法具有以下变体-doublemin(doublearg1,doublearg2)floatmin(floatarg1,floatarg2)intmin(intarg1,intarg2)longmin(longarg1,longarg2)min()-返回值此方法返回两个参......
  • 无涯教程-Java - rint()函数
    rint方法返回值最接近参数的整数。rint()-语法doublerint(doubled)这是参数的详细信息-d  - 它接受双精度值作为参数。rint()-返回值此方法返回值最接近参数的整数。rint()-示例publicclassTest{publicstaticvoidmain(Stringargs[]){do......
  • common-fileupload组件实现java文件上传和下载
    简介:文件上传和下载是javaweb中常见的操作,文件上传主要是将文件通过IO流传放到服务器的某一个特定的文件夹下,而文件下载则是与文件上传相反,将文件从服务器的特定的文件夹下的文件通过IO流下载到本地。对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直......
  • 无涯教程-Java - toString()函数
    该方法用于获取表示Number对象值的String对象。toString()-语法以下是此方法的所有变体-StringtoString()staticStringtoString(inti)这是参数的详细信息-i   - 将为其返回字符串表示形式的int。toString()-返回值toString()     - 这将返......
  • java 面向对象:类
    免责声明:java基础资料均来自于韩顺平老师的《循序渐进学Java零基础》教案,具体视频内容可以去B站观看,这些资料仅用于学习交流,不得转载用于商业活动1.java面向对象:类类与对象释义:类是抽象的,概念的,代表一类事物。例如人类,宠物类,即它是数据类型对象是具体的,实际的,代表一个具体的......
  • C# 操作Excel
     1.使用Aspose.Cells合并单元格下载Aspose包,可以去Nuget网站下载NuGetGallery|Packagesmatchingaspose 也可以使用vs安装Nuget包 语法:publicvoidMerge(intfirstRow,intfirstColumn,inttotalRows,inttotalColumns);实现代码:usingAspose.Cells;us......
  • Docker容器中配置和启用Java Flight Recorder(JFR)
    1.简介和背景在Java应用程序性能调优中,JavaFlightRecorder(JFR)是一个非常强大的工具。它能够实时收集Java应用程序的运行数据,提供有关性能问题的深入见解。在Docker容器中使用JFR,可以更轻松地管理和监控应用程序性能。2.JFR的基本概念和工作原理JFR是Java的一项特性,它通过事件记......
  • Java GC日志分析
    阅读分析虚拟机和垃圾收集器的日志是处理Java虚拟机内存问题必备的基础技能。一、JDK统一日志格式垃圾收集器日志是一系列人为设定的规则,多少有点随开发者编码时的心情而定,没有任何的“业界标准”可言,换句话说,每个收集器的日志格式都可能不一样。除此以外还有一个麻烦,在JDK9以前......
  • Aapche Dubbo Java反序列化漏洞(CVE-2019-17564)
    AapcheDubboJava反序列化漏洞(CVE-2019-17564)漏洞描述ApacheDubbo是一款高性能、轻量级的开源JavaRPC服务框架。Dubbo可以使用不同协议通信,当使用http协议时,ApacheDubbo直接使用了Spring框架的org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter类做远程......
  • 无涯教程-Java - valueOf()函数
    valueOf方法返回相关的Number对象,其中包含传递的参数的值,参数可以是原始数据类型,字符串等。此方法是静态方法。该方法可以使用两个参数,其中一个是字符串,另一个是基数。valueOf()-语法以下是此方法的所有变体-staticIntegervalueOf(inti)staticIntegervalueOf(String......