C#读取word中表格数据的方法实现

C#读取word中表格数据的方法实现

在C#中读取Word中表格数据,可以通过Microsoft.Office.Interop.Word库中提供的API来实现。下面是具体的实现方法。

步骤一:引用Microsoft.Office.Interop.Word库

在C#项目中添加Microsoft.Office.Interop.Word库的引用,引用方法如下:

  1. 在 Visual Studio 解决方案资源管理器中,右键单击“引用”,然后单击“添加引用”。
  2. 在“添加引用”窗口中,展开“COM”节点并勾选“Microsoft Word 16.0 Object Library”(或对应 Office 版本),然后单击“确定”按钮进行引用。

步骤二:实现读取表格数据的方法

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Word = Microsoft.Office.Interop.Word;

namespace WordTableReader
{
    class Program
    {
        static void Main(string[] args)
        {
            string filePath = @"C:\Test.docx"; // Word文档路径
            int tableIndex = 1; // 表格序号
            var table = GetTable(filePath, tableIndex); // 读取表格数据
            Console.WriteLine("表格数据:");
            foreach (var row in table)
            {
                foreach (var cell in row)
                {
                    Console.Write($"{cell}\t");
                }
                Console.WriteLine();
            }
            Console.ReadKey();
        }

        static List<List<string>> GetTable(string filePath, int tableIndex)
        {
            List<List<string>> table = new List<List<string>>();
            Word.Application application = new Word.Application();
            Word.Document document = null;
            try
            {
                document = application.Documents.Open(filePath);
                Word.Table wTable = document.Tables[tableIndex];
                int rows = wTable.Rows.Count;
                int cols = wTable.Columns.Count;
                for (int i = 1; i <= rows; i++)
                {
                    List<string> row = new List<string>();
                    for (int j = 1; j <= cols; j++)
                    {
                        row.Add(wTable.Cell(i, j).Range.Text.Replace("\r\a", ""));
                    }
                    table.Add(row);
                }
            }
            finally
            {
                document?.Close();
                application.Quit();
            }
            return table;
        }
    }
}

上述代码中,GetTable()方法接收Word文档路径和表格序号作为参数,并返回List>类型的表格数据。在Main()方法中调用GetTable()方法读取表格数据,并输出到控制台。

示例一:读取Word文档中第一个表格数据

string filePath = @"C:\Test.docx"; // Word文档路径
int tableIndex = 1; // 表格序号
var table = GetTable(filePath, tableIndex); // 读取表格数据
Console.WriteLine("表格数据:");
foreach (var row in table)
{
    foreach (var cell in row)
    {
        Console.Write($"{cell}\t");
    }
    Console.WriteLine();
}

示例二:读取Word文档中第二个表格数据

string filePath = @"C:\Test.docx"; // Word文档路径
int tableIndex = 2; // 表格序号
var table = GetTable(filePath, tableIndex); // 读取表格数据
Console.WriteLine("表格数据:");
foreach (var row in table)
{
    foreach (var cell in row)
    {
        Console.Write($"{cell}\t");
    }
    Console.WriteLine();
}

在上述示例中,只需将tableIndex值修改为对应的表格序号即可读取相应的表格数据。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#读取word中表格数据的方法实现 - Python技术站

(0)
上一篇 2023年5月15日
下一篇 2023年5月15日

相关文章

  • C#委托和事件

    1.委托 两大作用: (1)将方法当作参数传递 (2)方法的一种多态(多播委托) 一个弊端: 委托可以使用=,+=,-=来发布订阅,所以这里有一个弊端,它可以使用“=”将所有已经订阅的取消,只保留=后的这一个订阅。这样如果让多个类中写的委托轻易就能被修改,让程序变得不安全,所以为了解决这个弊端,事件event应运而生。 多说几句,委托和event的关系就类似…

    C# 2023年4月18日
    00
  • C# 可空类型的具体使用

    C# 可空类型是一种特殊的数据类型,允许变量的值为空。这在处理一些场景时非常有用,例如数据库中某些字段允许为空值,或者某些函数的返回值可能为空。 可空类型的定义 在 C# 中,可空类型通过在数据类型后面添加一个问号(?)来定义,例如 int? 定义了一个可空的整数类型,其值可以为 null 或者整数值。 判断可空类型是否为 null 要判断一个可空类型变量是…

    C# 2023年5月31日
    00
  • C#类和结构详解

    C#类和结构详解 什么是类和结构 在C#编程语言中,类和结构都是用来定义数据结构的方式。类和结构都可以定义成员变量、方法和属性。在使用时,类和结构的含义和用途有所不同。 类和结构最大的区别在于,类是引用类型,而结构是值类型。这意味着,类的变量实际上是一个引用,而结构的变量则是实际的数据。 如何定义类和结构 定义类 对于类的定义,需要使用关键字class。类的…

    C# 2023年5月15日
    00
  • C# WinForm捕获未处理的异常实例解析

    C# WinForm捕获未处理的异常实例解析 在开发过程中,未处理的异常是一个常见但又容易被忽略的问题。当应用程序抛出未处理异常时,程序会崩溃并弹出一个错误对话框,这会给用户留下不好的印象。为了避免这种情况,我们需要捕获程序中的未处理异常并进行处理。 在本文中,我们将介绍如何在C# WinForm应用程序中捕获未处理异常。 捕获未处理异常 在C# WinFo…

    C# 2023年5月15日
    00
  • C#封装DBHelper类

    下面是我对“C#封装DBHelper类”的完整攻略: 第一步:创建封装类 首先,我们需要创建一个名为DBHelper的类,这个类将会是一个对应于一个数据库连接的封装,提供了一系列的方法来操作数据库。这个类可以采用单例模式,确保整个应用程序只会有一个数据库连接对象。以下是一个简单的DBHelper类的示例: using System; using System…

    C# 2023年5月31日
    00
  • C#比较二个数组并找出相同或不同元素的方法

    针对“C#比较二个数组并找出相同或不同元素的方法”的完整攻略,以下是具体步骤: 步骤一:创建两个数组 首先,我们需要创建两个数组,来保存要进行比较的数据。可以使用 int[] 或者 string[] 等类型,以下是示例代码: int[] arr1 = new int[] {1, 2, 3, 4, 5}; int[] arr2 = new int[] {3, …

    C# 2023年6月7日
    00
  • C# string转换为几种不同编码的Byte[]的问题解读

    题目中的“C# string转换为几种不同编码的Byte[]的问题解读”可以理解为需要将一个C#字符串转换成不同编码方式的字节数组。 步骤一:确定编码方式 在转换字符串为字节数组之前,我们需要先确定编码格式。C#中支持下列编码方式: ASCII Unicode UTF-7 UTF-8 UTF-16 每一种编码方式对应的编码类名为: ASCII编码:ASCII…

    C# 2023年6月1日
    00
  • ASP.NET Core设置Ocelot网关限流

    ASP.NET Core设置Ocelot网关限流 Ocelot是一个基于.NET Core的API网关,它可以帮助我们将多个微服务组合成一个整体的API。在实际应用中,我们可能需要对API网关进行限流,以保证系统的稳定性和可靠性。本攻略将详细介绍如何在ASP.NET Core中使用Ocelot实现API网关限流。 安装Ocelot 首先,我们需要安装Ocel…

    C# 2023年5月17日
    00
合作推广
合作推广
分享本页
返回顶部