使用C#代码在 PowerPoint 演示文稿中插入表格

在 PowerPoint 中,表格是一种非常实用的工具,可以帮助你以清晰、简洁且直观的方式展示和整理数据。通过使用表格,你能够更有效地传达复杂信息,让观众更容易理解并记住重点内容。

本文将介绍如何使用 Spire.Presentation for .NET,在 C# 和 VB.NET 中向 PowerPoint 演示文稿插入表格。

安装 Spire.Presentation for .NET

在开始之前,您需要将 Spire.Presentation for .NET 安装包中的 DLL 文件添加为 .NET 项目的引用。您可以通过官方下载链接获取 DLL 文件,或直接通过 NuGet 进行安装。

cs 复制代码
PM> Install-Package Spire.Presentation

在 C# 和 VB.NET 中向 PowerPoint 演示文稿插入表格

您可以使用 ISlide.Shapes.AppendTable(float x, float y, double[] widths, double[] heights) 方法,在指定幻灯片上添加表格。具体步骤如下:

  1. 创建 Presentation 类的实例。

  2. 通过 Presentation.LoadFromFile(string file) 方法加载 PowerPoint 文件。

  3. 使用 Presentation.Slides[int index] 属性获取指定的幻灯片。

  4. 定义两个 double 数组(widths 和 heights),分别用于设置表格列数、列宽以及行数、行高。

  5. 调用 ISlide.Shapes.AppendTable(float x, float y, double[] widths, double[] heights) 方法,在幻灯片指定位置添加具有指定行列数量和尺寸的表格。

  6. 使用一个二维字符串数组存储表格数据。

  7. 遍历该二维数组,并通过 ITable[int columnIndex, int rowIndex].TextFrame.Text 属性,将数据填充到对应的单元格中。

  8. 将表格首行内容设置为居中对齐。

  9. 通过 ITable.StylePreset 属性为表格应用内置样式。

  10. 最后,使用 Presentation.SaveToFile(string file, FileFormat fileFormat) 方法保存演示文稿。

完整示例代码如下:

cs 复制代码
using Spire.Presentation;

namespace InsertTable
{
    internal class Program
    {
        static void Main(string[] args)
        {
            //初始化 Presentation 类的实例
            Presentation presentation = new Presentation();
            //加载 PowerPoint 演示文稿
            presentation.LoadFromFile(@"Input.pptx");

            //获取第一张幻灯片
            ISlide slide = presentation.Slides[0];

            //定义两个 double 数组 widths 和 heights,用于指定表格的列数、列宽以及行数、行高
            double[] widths = new double[] { 100, 100, 150, 100, 100 };
            double[] heights = new double[] { 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15 };

            //在幻灯片的指定位置添加具有指定行列数量和尺寸的表格
            ITable table = slide.Shapes.AppendTable(presentation.SlideSize.Size.Width / 2 - 275, 90, widths, heights);

            //使用二维字符串数组存储表格数据
            string[,] data = new string[,]{
            {"Name", "Capital", "Continent", "Area", "Population"},
            {"Venezuela", "Caracas", "South America", "912047", "19700000"},
            {"Bolivia", "La Paz", "South America", "1098575", "7300000"},
            {"Brazil", "Brasilia", "South America", "8511196", "150400000"},
            {"Canada", "Ottawa", "North America", "9976147", "26500000"},
            {"Chile", "Santiago", "South America", "756943", "13200000"},
            {"Colombia", "Bogota", "South America", "1138907", "33000000"},
            {"Cuba", "Havana", "North America", "114524", "10600000"},
            {"Ecuador", "Quito", "South America", "455502", "10600000"},
            {"Paraguay", "Asuncion", "South America", "406576", "4660000"},
            {"Peru", "Lima", "South America", "1285215", "21600000"},
            {"Jamaica", "Kingston", "North America", "11424", "2500000"},
            {"Mexico", "Mexico City", "North America", "1967180", "88600000"}
            };

            //遍历字符串数组,并将数据填充到表格的每个单元格中
            for (int i = 0; i < 13; i++)
                for (int j = 0; j < 5; j++)
                {
                    //为表格的每个单元格赋值
                    table[j, i].TextFrame.Text = data[i, j];
                    //设置字体名称和字体大小
                    table[j, i].TextFrame.Paragraphs[0].TextRanges[0].LatinFont = new TextFont("Times New Roman");
                    table[j, i].TextFrame.Paragraphs[0].TextRanges[0].FontHeight = 16;
                }

            //将表格第一行的内容设置为居中对齐
            for (int i = 0; i < 5; i++)
            {
                table[i, 0].TextFrame.Paragraphs[0].Alignment = TextAlignmentType.Center;
            }

            //为表格应用内置样式
            table.StylePreset = TableStylePreset.MediumStyle2Accent6;

            //将演示文稿保存到文件
            presentation.SaveToFile("InsertTable.pptx", FileFormat.Pptx2013);
            presentation.Dispose();
        }
    }
}

申请临时许可证

如果您希望去除生成文档中的评估提示信息,或解除功能限制,可以申请为期 30 天的试用许可证。

相关推荐
ESDWAN28 分钟前
跨境网络延迟、抖动和丢包有什么区别?如何判断业务影响
开发语言·网络·计算机网络·php
Code_Solitude30 分钟前
C语言分支结构练习题(华师版)
c语言·开发语言
淡海水1 小时前
03-03-架构篇-SGen GC架构解析
unity·架构·c#·gc·sgen
从小白到软工1 小时前
4-1 指针
c语言·开发语言·数据结构·经验分享·ai编程
Pniubi1 小时前
agent处理封号怎么解决误封问题
开发语言·python
.Hypocritical.1 小时前
【Java 进阶】泛型深度解析|泛型类、泛型方法、通配符、类型擦除、PECS 原则
java·开发语言·泛型
VX_bysjlw9851 小时前
基于PHP的论坛系统设计与实现 35136-计算机毕设原创(免费领源码+带部署教程)
开发语言·php·apache·laravel·thinkphp·phpstudy·wampserver
忆~遂愿1 小时前
电影照片散在硬盘里不好找?我用群晖+Plex整理成可远程访问的家庭媒体库
开发语言·php
卢锡荣2 小时前
乐得瑞Type-c接口产品描述
c语言·开发语言
晴天的雨.9922 小时前
【C++】模板进阶
开发语言·c++·算法