gpt4 book ai didi

c# - 使用 C# 在 Word 中按名称访问表

转载 作者:行者123 更新时间:2023-11-30 20:58:31 25 4
gpt4 key购买 nike

我有一个包含很多表格的文档。我想使用 C# 和 Microsoft.Office.Interop.Word 修改这些表。我读到我可以使用 Tables 接口(interface)遍历所有表。

问题:是否可以给表一个名称/ID 并通过名称访问表? (就像 Powerpoint 自动化中的形状一样)。

问题 2:如果 Microsoft.Office.Interop.Word 无法实现,那么 Aspose Words 等替代方案是否提供了更方便的方法?

最佳答案

is it possible to give the table a name/ID and access the table by its name?

Table 对象确实提供了一个 ID属性,但这只是保存为网页的文档。我假设这不是您想要的。

它仍然是可能的,但它不是由 API 提供的;您需要自己创建此功能。有两种方式:

一:使用 Interop,您可以检索表的哈希码,它(希望)返回一个唯一 ID。例如:

Word.Application wordApp = new Word.Application();
Word.Document wordDoc = wordApp.Documents.Open(@"C:\Users\username\Documents\HasTables.docx");
var tableID = wordDoc.Tables[1].GetHashCode();

一个彻底的解决方案可能是将文档中所有表的 ID 存储在一个字典或另一个具有键/值对映射的集合类型中。现在请注意,这些 ID 不会跨 Word session 持续存在...因此,如果您需要能够在同一 session 之外识别表格,则需要另一种方法。

二:使用 OpenXML(对于 .docx 格式)和/或 WordML(对于 Word 2003 XML,如果您不能简单地将文件升级到 .docx)为每个文件创建您自己的 Id 或 Name 属性w:表元素。您可以使用自己的 namespace 来消除歧义。这也将在整个 Word session 中持续存在。这是一个不同于 Interop 的世界,但在我看来,这是更好的途径(性能,可用文档)。

If it's not possible with Microsoft.Office.Interop.Word, do the alternatives like Aspose Words offer a more convenient way?

不,Aspose 在其 TableCollection 中不提供此类内容或 Table对象。

关于c# - 使用 C# 在 Word 中按名称访问表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16032867/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com