在 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 文档中提取不同级别的文本成为可能:
- 整个表格
- 一特定行
- 一个单独的细胞
让我们一步一步地处理这些。

示例表格
要了解有关如何使用 C# 从 OneNote 文档中提取文本和图像的更多信息,请查看我们详细的 guide on extracting content from OneNote files。
1. 使用 C# 从 OneNote 表中提取文本
我们可以轻松地使用 Aspose.Note for .NET 从 OneNote 文档中提取所有可用表格的文本。我们将通过访问表格节点、读取其内容以及以可读格式显示提取的文本的过程。
按照以下步骤从 OneNote 文档中的表格中提取文本:
- 使用
Document类加载.one文件。 - 使用
GetChildNodes<Table>()方法来检索所有表节点。 - 遍历每个表格并提取其文本内容。
- 打印结果到控制台。
以下代码示例显示了如何从 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 表格中的特定行提取文本
有时,您只需要从特定行中提取文本,而不是整个表格。我们将遍历所有表格,然后遍历每一行,独立提取文本。当您需要逐行分析或处理表格数据时,这非常有用。
您可以按照以下步骤逐行提取文本:
- 使用
Document类加载 OneNote 文件。 - 获取表节点的列表。
- 遍历每个表格,然后遍历每一行。
- 提取并显示每一行的文本。
以下代码示例展示了如何使用 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 中的表格中特定单元格中提取文本:
- 加载 OneNote 文档使用
Document类。 - 使用
GetChildNodes<Table>()检索表节点。 - 遍历每个表及其行。
- 提取单元格节点使用
GetChildNodes<TableCell>()。 - 提取每个单元格中的文本并显示它。
以下代码示例演示了如何使用 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。
