问题标签 [word-interop]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
522 浏览

c# - Word 互操作:如何确定 Word 文档选择是否包含段落标记?

我的VSTO加载项提供了一个功能区按钮,单击该按钮时,将调用ObjButtonAddFoo_Click该按钮将所选文本替换为文字字符串:

问题

注意:对于下面的屏幕截图,文件->选项->显示->显示所有格式标记被选中。

如果用户选择包含结尾段落标记的文本:

在此处输入图像描述

然后在执行代码时段落标记会丢失currentSelection.Range.Text = textToInsert。因此,如果选择包含结尾段落标记,我想通过执行替换它currentSelection.TypeParagraph()

我尝试查看 currentSelection.Paragraphs.Count,但无论选择是否包含段落标记,它的值为 1。

我还尝试了如何:在创建范围时以编程方式排除段落标记中描述的技术,但是如果选择不包括尾随段落标记,则保留最初选择的文本的最后一个字符。换句话说,我仍然需要知道选择中是否有尾随段落标记。

在我的ReplaceText方法中,如何确定 currentSelection 是否有尾随段落标记。或者,执行时如何保留段落标记currentSelection.Range.Text = textToInsert

0 投票
1 回答
716 浏览

c# - Word 互操作:如何根据查找命令的结果设置插入点?

注意:代码基于使用宏替换文档中出现的文本中记录的方法

我的目标是在第一页标题中找到的单词之后立即插入一个新段落,使用Word Interop Find.Execute. 为此,我需要wdSelectionIP在找到的单词的开头或结尾处有一个插入点(类型 == )。

我的假设是/是由于使用 查找第一页标题中的单词,Word 将在找到的单词的开头或结尾Word Interop Find.Execute设置一个插入点(type == )。wdSelectionIP您可以在我的SomeEventMethod_Click方法中看到这一点,即在此假设下,找到单词后,我导航到行尾,创建一个新的空段落,设置一些属性,然后输入一些文本。

输入了文本,但它没有跟随在第一页标题中找到的单词。而是在最后一页底部的主文本区域(即文档的正文)中键入文本。

如何根据 Find 命令的结果设置插入点?

类用于报告查找和替换结果

从中调用 FindReplaceAnywhere 方法的事件方法

FindReplaceAnywhere 方法

0 投票
1 回答
83 浏览

c# - 如何使用 Interop.Word 在一系列单元格上绘制边框?

我目前正在使用 Interop.Word 为文档绘制表格。我希望只为一组单元格(例如 R1C1 到 R2C3)绘制外边框 我大致知道如何在一个单元格周围绘制完整的外边框。

任何建议表示赞赏。

我知道我可以通过调用外线样式代码来设置单元格的边框。

我在某处读过我可以手动调用各个边界的地方,但那将是我最糟糕的情况。 带边框的单词表

目前我对那些 1x1 单元格拥有的是:

我希望我可以调用一些东西来绘制单元格范围的边界。

0 投票
3 回答
1235 浏览

c# - 在两个字符串之间选择文本 C# Word 互操作

我想选择并复制两个给定字符串之间的范围。复制图片或表格也很重要。对我来说很难解释,我希望这个例子会有所帮助:

文本:
完全到达私人之间。虽然 elinor 直接喜欢这样,但还是挺喜欢的。合理的估计是我们自己合理地恳求我的改变。直接希望如此期待礼貌的山谷。谁的要求受得了它的感觉没有被破坏。谨慎你太他的行为感觉有限和。他失去了希望,所以面对现实。善良做了合适的学习放。

我想要什么:
完全到达私人之间。虽然 elinor 直接喜欢这样,但还是挺喜欢的。合理的估计是我们自己合理地恳求我的改变。直接希望如此客气的谷。谁的要求受得了它的感觉没有被破坏。谨慎你太他的行为感觉有限和。他失去了希望,所以面对现实。善良做了合适的学习放。

也许我很愚蠢,但我像一周一样工作。我所有的方法都不会复制所有的表格和图片等。

0 投票
1 回答
166 浏览

c# - 如何通过 C# 获取 Microsoft Word 中表格的排序类型(升序/降序)?

我有一个带有 2 个表格的 Word 文档。第二个表有 5 列。该表按第四列排序。现在,我想知道使用 C# 在此表中应用了哪种排序类型。

我试图在互联网上搜索,但我只能Sort在微软的文档中找到该方法,我不知道如何开始(https://docs.microsoft.com/en-us/dotnet/api/microsoft .office.interop.word.table.sort?view=word-pia)。

0 投票
1 回答
293 浏览

c# - Word 互操作:可见总是错误的

我尝试打开如下单词:

在我的开发机器(Windows 10、Office 365)上运行此代码时,Word 出现(如预期的那样)并且输出为:

可见:真实

在生产机器(Windows Server 2019、Word 2019)上运行此代码时,没有出现Word ,输出为:

可见:假

生产机器上一定有一些问题,因为直到一周前一切都很顺利。

Windows 事件日志未显示任何指向此问题的内容。重新安装 Word 没有帮助。手动启动 Word 时,它正常启动并按预期显示。

有谁知道如何进一步调查或这个问题的原因可能是什么?

编辑 乳清我像这样修改代码:

...我得到一个例外:

Anwendung kann nicht aktiviert werden。HRESULT:0x800A11F9

我找到了以下文章COM Exception 0x800A11F9 - 无法激活应用程序,但这没有提供解决方案。HRESULT:0x800A11F9

我以管理员身份运行应用程序。

0 投票
3 回答
469 浏览

asp.net - ASP .NET / VB .net 使用 Microsoft Interop Word - CreateObject("Word.Application") 崩溃

我只是想使用 Microsoft Interop Word 用我的 asp net vb net webform 站点填充一个单词点文件(使用书签)。

它在我的 IIS Express 上完美调试,但在我的 Windows Server 2016 / IIS 10 上崩溃。

服务器崩溃并显示如下消息:

Cannot create ActiveX component.(原始错误消息:Impossible de créer le composant ActiveX。)

我正在寻找修复程序,但很多关于此错误的帖子都很旧。

我试图检查服务器注册表,密钥 {000209FF-0000-0000-C000-000000000046} 在这里,Microsoft Word 应用程序作为数据。

在服务器上,Microsoft Office 2016 与 Word 一起安装。

谢谢

编辑 12/08/2020:问题是关于 Interop Word 的服务器使用情况。为了解决这个问题,我不得不改用 OpenXML。

0 投票
1 回答
554 浏览

c# - 使用 C# 动态更新 MS Word 模板

我在特定位置添加了书签并使用 .dotx 保存该文件。当我运行解决方案时,它会在模板文件中添加日期,但会丢失模板中存储的所有剩余记录。我想在工作模板中动态添加数据,并且数据可以增长它会有所不同。

谢谢

0 投票
0 回答
897 浏览

c# - C# Word 互操作 - 打开没有转换提示的 .pdf

我正在使用 Word Interop 并希望打开一个 .pdf 文件并让 word 自动进行转换。

我设置了以下属性。

但是,当它打开时,我仍然收到以下提示:

在此处输入图像描述

文字版 2016。

有谁知道如何绕过这个?如果我单击“确定”,则程序的其余部分将按预期成功执行。

我知道并且不希望使用任何其他第三方工具。


感谢 BugFinder 建议使用 Format 参数,但仍然没有运气。

以下是代码的补充:

这会得到一个转换器,但仍会显示提示。:(


感谢 Cidney 的评论,进一步编辑。看来此提示是用户注册表设置,因为在互操作中绕过它是不可能的。对我来说,这似乎是互操作的一个缺陷。Open XML SDK 不支持另存为 XPS,因此这也不可用。看来我必须先操作用户注册表才能实现这一点(带来写权限问题)或检查 Word 是否正在等待用户输入和发送密钥。

0 投票
1 回答
332 浏览

c# - 从范围中提取富文本格式的文本

如何从 Word 文档的 Range(Microsoft.Interop.Word.Range 类)中提取 RTF 内容?Range 具有名为“Text”的属性,但它返回纯文本而不是 RTF 文本。那么如何从 Range 中获取 RTF 文本呢?