0
点赞
收藏
分享

微信扫一扫

Java学习笔记:从数组数据创建Excel图表

晒大太阳了 2022-02-08 阅读 87

主要概念

XSSFChart是代表Excel中的图表对象。 ChartBuilder是用于向XSSFChart中填充数据的构建器,有很多子类:

1) ChartFromArrayBuilder用于从一个固定的数组来创建数据;

2) ChartFromCellRangeBuilder用于从一个Excel表指定范围来创建数据;

创建Chart

XSSFChart chart = ExcelHelpers.createChart(sheet,0, 5, 7, 26);//在sheet上创建一个图表对象,显示到左上角坐标为(col1,row1)、右下角坐标为(col2,row2)这个位置。

chart.setTitleText("销售龙虎榜");

chart.getOrAddLegend().setPosition(LegendPosition.LEFT);

Builder

ChartFromArrayBuilder<Double> chartBuilder = new ChartFromArrayBuilder<>(ChartTypes.LINE);

泛型的类型为数据的类型, ChartTypes为图表的类型:LINE 折线图; LINE3D立体 折线图;BAR条形图;BAR3D 立体条形图;PIE 饼状图;PIE3D立体饼状图;RADAR 雷达图;SCATTER散点图等。

填充数据

String[] monthNames = {"一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"};

Double[] sales1 = {3.1,5.2,8.0,9.0,3.0,5.0,8.0,9.0,3.0,5.0,8.0,0.9};

Double[] sales2={5.0,81.0,4.0,9.8,1.8,3.9,5.8,81.8,4.8,9.8,1.8,3.9}; chartBuilder.setCategoryNames(monthNames)

.putValues("小王",sales1)

.putValues("小李",sales2)

.setCategoryAxisTitle("月份")

.setValueAxisTitle("销量")

.build(chart);

报错了Category and values must have the same point count、类别跟值应该一样。三个月份应该有三个值,我的值太多了 

package Part4;

import com.yzk18.commons.DesktopHelpers;
import com.yzk18.docs.ChartFromArrayBuilder;
import com.yzk18.docs.ExcelHelpers;
import org.apache.poi.xddf.usermodel.chart.ChartTypes;
import org.apache.poi.xddf.usermodel.chart.LegendPosition;
import org.apache.poi.xssf.usermodel.XSSFChart;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class ChartTest1 {
    public static void main(String[] args) {
        XSSFWorkbook wb = ExcelHelpers.createXLSX();
        XSSFSheet sheet=wb.createSheet();
        XSSFChart chart = ExcelHelpers.createChart(sheet, 0, 0, 10, 20);//指定坐标
        ChartFromArrayBuilder<Double> chartBuilder=new ChartFromArrayBuilder<>(ChartTypes.LINE);//类型
        chart.setTitleText("月报表");//标题
        //chart.getOrAddLegend().setPosition(LegendPosition.RIGHT);
        String[] names=new String[]{"一月份","二月份","三月份"};
        Double[] sales1=new  Double[]{3.0,5.0,9.0};
        Double[] sales2=new Double[]{3.2,2.4,12.0};
        chartBuilder.setCategoryNames(names);//横坐标
        chartBuilder.putValues("张三",sales1);//指定数据
        chartBuilder.putValues("李四",sales2);
        chartBuilder.setCategoryAxisTitle("销售额");//指定横纵坐标标题
        chartBuilder.setValueAxisTitle("月份");
        chartBuilder.build(chart);//填充到chart中
        //chartBuilder.putValues()


        ExcelHelpers.saveToFile(wb,"d:/temp/wb.xlsx");
        ExcelHelpers.close(wb);
        DesktopHelpers.openFile("d:/temp/wb.xlsx");
    }
}

 

package Part4;

import com.yzk18.commons.CommonHelpers;
import com.yzk18.commons.DesktopHelpers;
import com.yzk18.docs.ChartFromArrayBuilder;
import com.yzk18.docs.ExcelHelpers;
import org.apache.poi.xddf.usermodel.chart.ChartTypes;
import org.apache.poi.xddf.usermodel.chart.LegendPosition;
import org.apache.poi.xssf.usermodel.XSSFChart;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class ChartTest2 {
    public static void main(String[] args) {
        XSSFWorkbook wb = ExcelHelpers.createXLSX();
        XSSFSheet sheet = wb.createSheet();
        String[] monthNames = {"一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"};
        Double[] sales1 = {3.1,5.2,8.0,9.0,3.0,5.0,8.0,9.0,3.0,5.0,8.0,0.9};
        Double[] sales2={5.0,81.0,4.0,9.8,1.8,3.9,5.8,81.8,4.8,9.8,1.8,3.9};
        ChartFromArrayBuilder<Double> chartBuilder = new ChartFromArrayBuilder<>(ChartTypes.LINE);
        XSSFChart chart = ExcelHelpers.createChart(sheet,0, 5, 7, 26);
        chart.setTitleText("销售龙虎榜");
        chart.getOrAddLegend().setPosition(LegendPosition.LEFT);
        chartBuilder.setCategoryNames(monthNames)
                .putValues("小王",sales1)
                .putValues("小李",sales2)
                .setCategoryAxisTitle("月份").setValueAxisTitle("销量")
                .build(chart);
        ExcelHelpers.saveToFile(wb, "d:/temp/1.xlsx");
        CommonHelpers.close(wb);
        DesktopHelpers.openFile("d:/temp/1.xlsx");

    }
}
举报

相关推荐

0 条评论