在 OneNote 中,表格有助于保持信息的组织,从会议记录和数据日志到快速比较表格。有些情况下,您需要以编程方式从 OneNote 中的表格提取文本。也许您想分析表格内容,将其移动到数据库中,或将其转换为其他格式。

在本指南中,我们将向您展示如何使用 C# 从 OneNote 中提取表格文本。您将学习如何从整个表格、单行,甚至单个单元格中获取文本,使用简单易懂的示例。

让我们开始吧。

为什么要从 OneNote 中的表格提取文本?

开发人员经常需要从 OneNote 表格中提取数据以进行自动化、报告或与其他系统的集成。以下是一些现实世界的例子:

  • 将会议摘要导出为结构化报告。
  • 从共享笔记中读取表格数据以进行分析。
  • 与外部系统或仪表板同步 OneNote 表格。

而不是手动复制数据,Aspose.Note for .NET 允许您通过代码以快速、一致和完全自动化的方式处理所有这些。

C# 库用于从 OneNote 表格中提取文本

Aspose.Note for .NET 是一个强大的 API,允许开发者在 .NET 应用程序中创建、读取、编辑和转换 OneNote 文件。它支持丰富的对象模型来访问页面、文本、图像、提纲和表格等元素。对于表格文本提取,它提供了 Document 类,代表一个 OneNote 文件,以及像 GetChildNodes() 这样的方法,使开发者能够轻松定位和提取表格元素。

您可以从 Aspose.Note for .NET releases page 下载它,或者使用 NuGet 安装它:

PM> Install-Package Aspose.Note

如何从 OneNote 中提取表格文本

Aspose.Note 使得从 OneNote 文档中提取不同级别的文本成为可能:

  • 整个表格
  • 一特定行
  • 一个单独的细胞

让我们一步一步地处理这些。

如何从 OneNote 中的表格提取文本:示例表格

示例表格

要了解有关如何使用 C# 从 OneNote 文档中提取文本和图像的更多信息,请查看我们详细的 guide on extracting content from OneNote files

1. 使用 C# 从 OneNote 表中提取文本

我们可以轻松地使用 Aspose.Note for .NET 从 OneNote 文档中提取所有可用表格的文本。我们将通过访问表格节点、读取其内容以及以可读格式显示提取的文本的过程。

按照以下步骤从 OneNote 文档中的表格中提取文本:

  1. 使用 Document 类加载 .one 文件。
  2. 使用 GetChildNodes<Table>() 方法来检索所有表节点。
  3. 遍历每个表格并提取其文本内容。
  4. 打印结果到控制台。

以下代码示例显示了如何从 OneNote 文档中的所有表格中提取文本。

using Aspose.Note;

// 将文档加载到 Aspose.Note 中。
Document document = new Document("SampleTable.one");

// 获取表节点列表
IList<Table> nodes = document.GetChildNodes<Table>();

// Set table count
int tblCount = 0;

foreach (Table table in nodes)
{
    tblCount++;
    Console.WriteLine("Table # " + tblCount);

    // Retrieve text
    string text = string.Join(Environment.NewLine,
        table.GetChildNodes<RichText>().Select(e => e.Text)) + Environment.NewLine;

    // 打印文本到输出屏幕
    Console.WriteLine(text);
}

Output

Table # 1
cell_1.1
cell_1.2
cell_1.3
cell_2.1
cell_2.2
cell_2.3

2. 从 OneNote 表格中的特定行提取文本

有时,您只需要从特定行中提取文本,而不是整个表格。我们将遍历所有表格,然后遍历每一行,独立提取文本。当您需要逐行分析或处理表格数据时,这非常有用。

您可以按照以下步骤逐行提取文本:

  1. 使用 Document 类加载 OneNote 文件。
  2. 获取表节点的列表。
  3. 遍历每个表格,然后遍历每一行。
  4. 提取并显示每一行的文本。

以下代码示例展示了如何使用 C# 从表中提取一行文本:

using Aspose.Note;

// 将文档加载到 Aspose.Note 中。
Document document = new Document("SampleTable.one");

// 获取表节点的列表
IList<Table> nodes = document.GetChildNodes<Table>();

// 设置行数
int rowCount = 0;

foreach (Table table in nodes)
{
    // 遍历表格行
    foreach (TableRow row in table)
    {
        rowCount++;
        // Retrieve text
        string text = string.Join(Environment.NewLine,
            row.GetChildNodes<RichText>().Select(e => e.Text)) + Environment.NewLine;

        // Print text on the output screen
        Console.WriteLine($"Row #{rowCount}:");
        Console.WriteLine(text);
    }
}

Output

Row #1:
cell_1.1
cell_1.2
cell_1.3

Row #2:
cell_2.1
cell_2.2
cell_2.3

3. 从表格中的特定单元格提取文本

如果你想更深入地提取特定单元格中的文本,你也可以这样做。为此,我们将检索最小的文本单元,即每个单元格的内容。当你需要对数据提取进行精细控制以便进一步处理或数据映射时,这非常完美。

按照以下步骤从 OneNote 中的表格中特定单元格中提取文本:

  1. 加载 OneNote 文档使用 Document 类。
  2. 使用 GetChildNodes<Table>() 检索表节点。
  3. 遍历每个表及其行。
  4. 提取单元格节点使用 GetChildNodes<TableCell>()
  5. 提取每个单元格中的文本并显示它。

以下代码示例演示了如何使用 C# 从表中的行中获取单元格文本:

using Aspose.Note;

// 将文档加载到 Aspose.Note 中。
Document document = new Document("SampleTable.one");

// 获取表节点的列表
IList<Table> nodes = document.GetChildNodes<Table>();

foreach (Table table in nodes)
{
    // 遍历表格行
    foreach (TableRow row in table)
    {
        // 获取 TableCell 节点列表
        IList<TableCell> cellNodes = row.GetChildNodes<TableCell>();
        // 遍历表格单元格
        foreach (TableCell cell in cellNodes)
        {
            // Retrieve text
            string text = string.Join(Environment.NewLine,
                cell.GetChildNodes<RichText>().Select(e => e.Text)) + Environment.NewLine;
            // Print text on the output screen
            Console.WriteLine(text);
        }
    }
}

Output

cell_1.1

cell_1.2

cell_1.3

cell_2.1

cell_2.2

cell_2.3

为什么使用 Aspose.Note for .NET 进行文本提取?

  • 完全离线工作,不使用 Microsoft OneNote。
  • 提取文本时保留格式和结构。
  • 支持所有表格元素(表头、单元格、嵌套表格)。
  • 提供强大的 LINQ 支持,用于过滤和查询内容。
  • 与现有 .NET 应用程序的轻松集成。

无论您是在构建分析工具、自动化脚本还是自定义笔记转换器,Aspose.Note 都为您提供了所需的灵活性和控制。

您可以从 Aspose License Page 获取免费临时许可证,以便在没有限制的情况下尝试 Aspose.Note for .NET。申请只需一分钟,您将能够测试该库的所有功能。

免费附加资源

结论

从 OneNote 中提取表格文本并不复杂。使用 Aspose.Note for .NET,您可以轻松地从整个表格、特定行或单个单元格中获取文本,仅需几行 C# 代码。该 API 处理解析、节点管理和内容遍历,而您可以专注于根据需要使用这些数据。

如果您有任何问题或需要帮助开始,请访问我们的 free support forum 与 Aspose.Note 团队联系。

常见问题解答

Q: 我可以从我的 OneNote 文档中的特定表格中提取文本吗?

是的,您可以使用 LINQ 或基于索引的选择来过滤表节点,以针对特定表进行提取。

Q: 我需要安装 Microsoft OneNote 才能使用 Aspose.Note for .NET 吗?

不,Aspose.Note for .NET 独立工作,不需要 Microsoft OneNote 或任何其他外部软件。

Q: Aspose.Note for .NET 在文本提取过程中是否保持表格结构?

是的,它保留了表格的逻辑结构,使您能够从整个表格、行或单个单元格中提取内容,同时保持顺序。

Q: 我可以从 OneNote 表格中提取格式化文本吗?

Aspose.Note 主要提取纯文本。然而,如果您需要格式细节,您可以访问和处理富文本对象。

Q: Aspose.Note for .NET 是否与 .NET Core 和 .NET 6+ 兼容?

是的,它支持 .NET Framework、.NET Core 和最新的 .NET 版本,适用于 Windows、Linux 和 macOS。

另请参阅