java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Java PPT创建柱状图和折线图

Java实现在PowerPoint中创建柱状图和折线图实现数据可视化

作者:用户033212666367

在瞬息万变的职场和学习环境中,高效的数据可视化是讲述数据故事、传递核心洞察的关键,本文将为您揭示如何利用 Spire.Presentation for Java 库轻松实现 PowerPoint 中柱状图和折线图的自动化创建,需要的可以参考下

在瞬息万变的职场和学习环境中,高效的数据可视化是讲述数据故事、传递核心洞察的关键。无论是制作项目报告、市场分析还是学术演示,柱状图和折线图都是最常用且直观的图表类型。然而,手动在 PowerPoint 中创建和更新大量图表不仅耗时,还容易出错。本文将为您揭示如何利用 Spire.Presentation for Java 库,轻松实现 PowerPoint 中柱状图和折线图的自动化创建,彻底告别繁琐的手动操作!

Spire.Presentation for Java 库介绍与安装

Spire.Presentation for Java 是一个功能强大的 Java API,专为创建、读取、编辑和转换 PowerPoint 演示文稿而设计。它支持 PPT、PPTX 等多种格式,提供了丰富的对象模型,让开发者能够以编程方式全面控制 PowerPoint 文档的各个方面,包括幻灯片管理、形状操作、文本处理以及本文重点关注的图表创建与编辑。其优势在于无需安装 Microsoft Office 即可独立运行,极大地提升了自动化处理的灵活性和效率。

Maven 依赖配置

在您的 pom.xml 文件中添加以下 Maven 依赖,即可将 Spire.Presentation 库引入您的项目:

  <repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url>https://repo.e-iceblue.cn/repository/maven-public/</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.presentation</artifactId>
        <version>10.11.4</version>
    </dependency>
</dependencies>

提示: 您可以访问 E-iceblue 官方网站获取最新版本的依赖信息或下载 JAR 包手动添加到项目中。

如何在 PowerPoint 中创建柱状图

柱状图是比较不同类别数据最常用的图表类型。通过 Spire.Presentation,您可以轻松地自动化创建和填充柱状图。

详细步骤

创建演示文稿对象: 实例化 Presentation 类,代表一个新的 PowerPoint 文档。

添加图表: 调用幻灯片对象的 getShapes().appendChart() 方法,指定图表类型为 ChartType.COLUMN_CLUSTERED(簇状柱形图)或其他柱状图类型,并设置图表的位置和大小。

设置图表数据:

设置图表属性:

保存演示文稿: 调用 presentation.saveToFile() 方法将 PPT 文档保存到指定路径。

Java 代码示例 (柱状图)

import com.spire.presentation.*;
import com.spire.pdf.tables.table.*;
import com.spire.presentation.charts.*;
import com.spire.presentation.drawing.FillFormatType;
import java.awt.geom.Rectangle2D;
import java.lang.Object;


public class CreateChart {
    public static void main(String[] args) throws Exception {

        //实例化一个Presentation对象
        Presentation presentation = new Presentation();

        //插入柱形图

        Rectangle2D.Double rect = new Rectangle2D.Double(40, 100, 550, 320);
        IChart chart = null;
        chart = presentation.getSlides().get(0).getShapes().appendChart(ChartType.COLUMN_CLUSTERED, rect);

        //添加表名
        chart.getChartTitle().getTextProperties().setText("销售报表");
        chart.getChartTitle().getTextProperties().isCentered(true);
        chart.getChartTitle().setHeight(30);
        chart.hasTitle(true);

        //创建后台数据表
        DataTable dataTable = new DataTable();
        dataTable.getColumns().add(new DataColumn("销售额", DataTypes.DATATABLE_STRING));
        dataTable.getColumns().add(new DataColumn("谷物", DataTypes.DATATABLE_INT));
        dataTable.getColumns().add(new DataColumn("粮油", DataTypes.DATATABLE_INT));
        dataTable.getColumns().add(new DataColumn("百货", DataTypes.DATATABLE_INT));
        DataRow row1 = dataTable.newRow();
        row1.setString("销售额", "门店1");
        row1.setInt("谷物", 250);
        row1.setInt("粮油", 150);
        row1.setInt("百货", 99);
        DataRow row2 = dataTable.newRow();
        row2.setString("销售额", "门店2");
        row2.setInt("谷物", 270);
        row2.setInt("粮油", 150);
        row2.setInt("百货", 99);
        DataRow row3 = dataTable.newRow();
        row3.setString("销售额", "门店3");
        row3.setInt("谷物", 310);
        row3.setInt("粮油", 120);
        row3.setInt("百货", 49);
        DataRow row4 = dataTable.newRow();
        row4.setString("销售额", "门店4");
        row4.setInt("谷物", 330);
        row4.setInt("粮油", 120);
        row4.setInt("百货", 49);
        DataRow row5 = dataTable.newRow();
        row5.setString("销售额", "门店5");
        row5.setInt("谷物", 360);
        row5.setInt("粮油", 150);
        row5.setInt("百货", 141);
        DataRow row6 = dataTable.newRow();
        row6.setString("销售额", "门店6");
        row6.setInt("谷物", 380);
        row6.setInt("粮油", 150);
        row6.setInt("百货", 135);
        dataTable.getRows().add(row1);
        dataTable.getRows().add(row2);
        dataTable.getRows().add(row3);
        dataTable.getRows().add(row4);
        dataTable.getRows().add(row5);
        dataTable.getRows().add(row6);

        //将数据写入图表
        for (int c = 0; c < dataTable.getColumns().size(); c++) {
            chart.getChartData().get(0, c).setText(dataTable.getColumns().get(c).getColumnName());
        }
        for (int r = 0; r < dataTable.getRows().size(); r++) {
            Object[] datas = dataTable.getRows().get(r).getArrayList();
            for (int c = 0; c < datas.length; c++) {
                chart.getChartData().get(r + 1, c).setValue(datas[c]);

            }
        }

        //设置系列标签
        chart.getSeries().setSeriesLabel(chart.getChartData().get("B1", "D1"));

        //设置类别标签
        chart.getCategories().setCategoryLabels(chart.getChartData().get("A2", "A7"));

        //为各个系列赋值
        chart.getSeries().get(0).setValues(chart.getChartData().get("B2", "B7"));
        chart.getSeries().get(1).setValues(chart.getChartData().get("C2", "C7"));
        chart.getSeries().get(2).setValues(chart.getChartData().get("D2", "D7"));
        chart.getSeries().get(2).getFill().setFillType(FillFormatType.SOLID);
        chart.getSeries().get(2).getFill().getSolidColor().setKnownColor(KnownColors.LIGHT_BLUE);

        //设置系列重叠
        chart.setOverLap(-50);

        //设置类别间距
        chart.setGapDepth(200);

        //保存文档
        presentation.saveToFile("output/CreateChart.pptx", FileFormat.PPTX_2010);

    }
}

如何在 PowerPoint 中创建折线图

折线图常用于展示数据随时间变化的趋势。创建折线图的步骤与柱状图类似,只需调整图表类型和数据绑定方式。

详细步骤

创建演示文稿对象: 实例化 Presentation 类。

添加图表: 调用幻灯片对象的 getShapes().appendChart() 方法,指定图表类型为 ChartType.LINE,并设置图表的位置和大小。

设置图表数据:

设置图表属性:设置图表标题、图例等。

保存演示文稿: 调用 presentation.saveToFile() 方法保存 PPT 文档。

Java 代码示例 (折线图)

import com.spire.presentation.FileFormat;
import com.spire.presentation.Presentation;
import com.spire.presentation.SlideSizeType;
import com.spire.presentation.charts.ChartLegendPositionType;
import com.spire.presentation.charts.ChartType;
import com.spire.presentation.charts.IChart;

import java.awt.geom.Rectangle2D;

public class LineChart {
    public static void main(String[] args) throws Exception {

        //创建Presentation对象
        Presentation presentation = new Presentation();
        presentation.getSlideSize().setType(SlideSizeType.SCREEN_16_X_9);

        //插入折线图
        Rectangle2D.Double rect = new   Rectangle2D.Double(100, 50, 600, 430);
        IChart chart = presentation.getSlides().get(0).getShapes().appendChart(ChartType.LINE, rect);

        //设置图表标题
        chart.getChartTitle().getTextProperties().setText("产品月销量趋势");
        chart.getChartTitle().getTextProperties().isCentered(true);
        chart.getChartTitle().setHeight(30);
        chart.hasTitle(true);

        //设置轴标题
        chart.getPrimaryCategoryAxis().getTitle().getTextProperties().setText("月份");
        chart.getPrimaryCategoryAxis().hasTitle(true);
        chart.getPrimaryValueAxis().getTitle().getTextProperties().setText("销量");
        chart.getPrimaryValueAxis().hasTitle(true);

        //写入图表数据
        chart.getChartData().get(0,0).setText("月份");
        chart.getChartData().get(1,0).setText("一月");
        chart.getChartData().get(2,0).setText("二月");
        chart.getChartData().get(3,0).setText("三月");
        chart.getChartData().get(4,0).setText("四月");
        chart.getChartData().get(5,0).setText("五月");
        chart.getChartData().get(6,0).setText("六月");

        chart.getChartData().get(0,1).setText("台式机");
        chart.getChartData().get(1,1).setNumberValue(80);
        chart.getChartData().get(2,1).setNumberValue(45);
        chart.getChartData().get(3,1).setNumberValue(25);
        chart.getChartData().get(4,1).setNumberValue(20);
        chart.getChartData().get(5,1).setNumberValue(10);
        chart.getChartData().get(6,1).setNumberValue(5);

        chart.getChartData().get(0,2).setText("笔记本");
        chart.getChartData().get(1,2).setNumberValue(30);
        chart.getChartData().get(2,2).setNumberValue(25);
        chart.getChartData().get(3,2).setNumberValue(35);
        chart.getChartData().get(4,2).setNumberValue(50);
        chart.getChartData().get(5,2).setNumberValue(45);
        chart.getChartData().get(6,2).setNumberValue(55);

        chart.getChartData().get(0,3).setText("平板");
        chart.getChartData().get(1,3).setNumberValue(10);
        chart.getChartData().get(2,3).setNumberValue(15);
        chart.getChartData().get(3,3).setNumberValue(20);
        chart.getChartData().get(4,3).setNumberValue(35);
        chart.getChartData().get(5,3).setNumberValue(60);
        chart.getChartData().get(6,3).setNumberValue(95);

        //设置系列标签
        chart.getSeries().setSeriesLabel(chart.getChartData().get("B1", "D1"));

        //设置分类标签
        chart.getCategories().setCategoryLabels(chart.getChartData().get("A2", "A7"));

        //设置系列数据区域
        chart.getSeries().get(0).setValues(chart.getChartData().get("B2", "B7"));
        chart.getSeries().get(1).setValues(chart.getChartData().get("C2", "C7"));
        chart.getSeries().get(2).setValues(chart.getChartData().get("D2", "D7"));

        //在数据标签中显示数据
        chart.getSeries().get(0).getDataLabels().setLabelValueVisible(true);
        chart.getSeries().get(1).getDataLabels().setLabelValueVisible(true);
        chart.getSeries().get(2).getDataLabels().setLabelValueVisible(true);

        //设置图例位置
        chart.getChartLegend().setPosition(ChartLegendPositionType.TOP);

        //保存文档
        presentation.saveToFile("LineChart.pptx", FileFormat.PPTX_2013);
    }
}

总结

通过本文的详细教程,您已经掌握了如何利用 Spire.Presentation for Java 库在 PowerPoint 中自动化创建柱状图和折线图。这个强大的工具能够将您从重复性的手动操作中解放出来,无论是生成每日报告、每月总结还是复杂的年度演示,都能显著提高工作效率,确保数据展示的准确性和一致性。Spire.Presentation for Java 不仅限于图表创建,其在PPT自动化处理方面的潜力巨大,鼓励您进一步探索它在更复杂数据呈现场景中的应用,让数据可视化变得前所未有的简单和高效!

以上就是Java实现在PowerPoint中创建柱状图和折线图实现数据可视化的详细内容,更多关于Java PPT创建柱状图和折线图的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文