使用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 数组(widthsheights),分别用于设置表格列数、列宽以及行数、行高。

  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 天的试用许可证。

相关推荐
寻寻觅觅☆5 小时前
东华OJ-基础题-106-大整数相加(C++)
开发语言·c++·算法
l1t5 小时前
在wsl的python 3.14.3容器中使用databend包
开发语言·数据库·python·databend
赶路人儿6 小时前
Jsoniter(java版本)使用介绍
java·开发语言
ceclar1236 小时前
C++使用format
开发语言·c++·算法
码说AI7 小时前
python快速绘制走势图对比曲线
开发语言·python
Gofarlic_OMS7 小时前
科学计算领域MATLAB许可证管理工具对比推荐
运维·开发语言·算法·matlab·自动化
星空下的月光影子7 小时前
易语言开发从入门到精通:补充篇·网络爬虫与自动化采集分析系统深度实战·HTTP/HTTPS请求·HTML/JSON解析·反爬策略·电商价格监控·新闻资讯采集
开发语言
老约家的可汗7 小时前
初识C++
开发语言·c++
wait_luky7 小时前
python作业3
开发语言·python
消失的旧时光-19437 小时前
第十九课:为什么要引入消息队列?——异步系统设计思想
java·开发语言