Java 使用 Spire.Presentation 在 PowerPoint 中添加或删除表格行与列

在日常开发中,Java 开发者常需自动化生成报告PPT,手动编辑PowerPoint 表格行与列效率低下,尤其批量操作时易出错。Spire.Presentation for Java 库提供高效解决方案,支持添加行与列、删除行与列等 PPT 表格操作,无需 Office 依赖。基于最新 7.24.x 版本,本文分享实用代码与步骤,助你快速上手。


Spire.Presentation for Java 库介绍与安装

Spire.Presentation for Java 是 e-iceblue 推出的专业PPT处理库,支持PPTX创建、编辑、转换与表格高级操作,如动态添加行与列、删除行与列。最新7.24.x版本优化了表格性能,支持大表格批量处理,适用于报表自动化场景。

安装步骤

  1. Maven (推荐):
    pom.xml 添加依赖:
xml 复制代码
  <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>11.1.3</version>
    </dependency>
</dependencies>
  1. 验证:新建 Java 项目,运行简单代码加载 PPTX 确认环境。

准备就绪后即可操作表格。该库体积小、API 直观,远超手动 VBA。


Java 在 PowerPoint 中添加表格的行与列

添加行与列 核心使用 ITable 接口的 append()insert() 方法,支持克隆现有行/列快速扩展。

步骤

  1. 创建 Presentation 对象,加载或新建幻灯片。
  2. 在幻灯片添加表格:shapes.appendTable(x, y, widths, heights),或者使用 presentation.getSlides().get().getShapes() 获取已存在的表格。
  3. 添加行 :克隆行后 tableRows.append(clonedRow)
  4. 添加列 :类似 columnsList.append(clonedColumn)
  5. 填充数据,保存 PPTX。

完整代码示例(添加行与列):

scss 复制代码
import com.spire.presentation.*;

public class AddRowAndColumn {

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

        //加载示例文档
        Presentation presentation = new Presentation();
        presentation.loadFromFile("C:\Users\Administrator\Desktop\input.pptx");

        //获取表格
        ITable table = null;
        for (Object shape : presentation.getSlides().get(0).getShapes()) {
            if (shape instanceof ITable) {
                table = (ITable) shape;

                //将最后一行作为新行添加到表格下方
                int rowCount = table.getTableRows().getCount();
                TableRow row = table.getTableRows().get(rowCount - 1);
                table.getTableRows().append(row);

                //获取新行,并设置每个单元格的文本
                rowCount = table.getTableRows().getCount();
                row = table.getTableRows().get(rowCount - 1);
                row.get(0).getTextFrame().setText("美国");
                row.get(1).getTextFrame().setText("华盛顿");
                row.get(2).getTextFrame().setText("北美洲");
                row.get(3).getTextFrame().setText("9372610");

                //将最后一列作为新列添加到表格右方
                int colCount = table.getColumnsList().getCount();
                TableColumn column =table.getColumnsList().get(colCount-1);
                table.getColumnsList().add(column);

                //获取新列,并设置每个单元格的文本
                colCount = table.getColumnsList().getCount();
                column = table.getColumnsList().get(colCount-1);
                column.get(0).getTextFrame().setText("人口");
                column.get(1).getTextFrame().setText("32370000");
                column.get(2).getTextFrame().setText("7350000");
                column.get(3).getTextFrame().setText("15040000");
                column.get(4).getTextFrame().setText("26500000");
                column.get(5).getTextFrame().setText("329740000");
            }
        }

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

常见问题:克隆后记得更新单元格文本,避免数据重复。批量添加时用循环,性能优异。


Java 在 PowerPoint 中删除表格的行与列

删除行与列使用 removeAt(index, isClone),第二个参数 false 表示直接移除。注意索引从0开始,避免越界。

步骤

  1. 加载 PPT,获取 ITable
  2. 删除行tableRows.removeAt(rowIndex, false)
  3. 删除列columnsList.removeAt(colIndex, false)
  4. 处理异常(如空表),保存。

完整代码示例(删除第二行和第二列):

java 复制代码
import com.spire.presentation.FileFormat;
import com.spire.presentation.ITable;
import com.spire.presentation.Presentation;

public class DeleteRowAndColumn {

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

        //加载示例文档
        Presentation presentation = new Presentation();
        presentation.loadFromFile("C:\Users\Administrator\Desktop\input.pptx");

        //获取表格
        ITable table = null;
        for (Object shape : presentation.getSlides().get(0).getShapes()) {
            if (shape instanceof ITable) {
                table = (ITable) shape;

                //删除第二列
                table.getColumnsList().removeAt(1, false);

                //删除第二行
                table.getTableRows().removeAt(1, false);
            }
        }

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

常见问题 :删除后索引变化,建议倒序遍历。空表检查用 getCount() > index


总结

掌握 Spire.Presentation for Java 的在幻灯片添加行与列、删除行与列操作,可大幅提升处理 PowerPoint 演示文稿的自动化效率。立即运行以上代码实践,结合循环处理批量报表。

相关推荐
Seven974 小时前
Condition底层机制剖析:多线程等待与通知机制
java
怒放吧德德13 小时前
Spring Boot 实战:RSA+AES 接口全链路加解密(防篡改 / 防重放)
java·spring boot·后端
郑州光合科技余经理16 小时前
代码展示:PHP搭建海外版外卖系统源码解析
java·开发语言·前端·后端·系统架构·uni-app·php
大大水瓶17 小时前
Tomcat
java·tomcat
dustcell.17 小时前
haproxy七层代理
java·开发语言·前端
游离态指针17 小时前
以为发消息=下单成功?RabbitMQ从0到秒杀实战的完整踩坑笔记
java
BD_Marathon18 小时前
工厂方法模式
android·java·工厂方法模式
玹外之音18 小时前
Spring AI MCP 无状态服务器实战:构建AI智能用户管理系统
java·后端
java干货18 小时前
Redis 的 ZipList 是什么?它是怎么解决内存碎片问题的?
java