- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
对于我的 VSTO Word 解决方案,我需要以编程方式并排“比较”两个文档。换句话说,我需要从代码中执行与单击 View > Show Side by Side 按钮等效的操作。
我尝试使用 CompareSideBySideWith加载两个文档后的方法。抛出异常:“请求的集合成员不存在”。我不是第一个遇到这种情况的人。请参阅 Microsoft 在 this thread 中的回复(样板,不是特别有用) . MS 代表最终挠着头放弃了。
我什至尝试打开两个空白文档并进行比较。这次也不异常(exception),但没有进行比较,CompareSideBySideWith() 返回 false。
Document doc1 = this.word.Documents.Add(ref missing, ref missing, ref missing, ref missing);
object doc2 = this.word.Documents.Add(ref missing, ref missing, ref missing, ref missing);
doc1.Windows.CompareSideBySideWith(ref doc2);
有没有人找到解决方法?在自定义解决方案中使用它似乎是一项非常基本的功能。
注意:我们需要调用实际的“并排”比较,而不仅仅是通过 Windows.Arrange() 排列窗口。这部分是因为我们的功能区包含“并排查看”按钮的别名,除非成功调用实际的“并排”命令,否则该别名不会打开(按下)。
更新:上面的例子涉及两个新的文档,仍然抛出异常; Word 吞下了异常,因为我在 try-catch block 之外尝试了它。
下面的 Per Otaku 我尝试改为调用 doc2.Windows.Compare(ref doc1),这适用于空白文档以及从 Word 2007 保存为 .docx 和 .rtf 的测试文档。
但是,我们需要比较从另一个 RTF 编辑器保存为 RTF 格式的文档。当我加载我们的一份文件时,它失败了。要重现我的错误,请尝试加载从写字板保存的 RTF 文档——这些文档也会失败。我尝试修改 Documents.Open() 的编码和格式参数,但无济于事。最好避免将临时文件转换并保存为 .docx,尤其是对于较大的文档!另请注意,我可以在手动打开写字板保存的 RTF 文件后单击“并排查看”,它可以正常工作。
此外,比较文档(作为参数传递给 Windows.CompareSideBySideWith() 的文档)的格式似乎很重要。例如,如果我们像 Otaku 那样执行 doc2.Windows.CompareSideBySideWith(ref doc1)例如,当 doc1 是常规 docx 时它起作用,但当它是从写字板保存的 RTF 时不起作用。(不管 doc2 来自哪里)。
更新 2:照例一行代码解决好几天的追尾:
doc1.Convert(); // Updates the document to the newest object model (i.e. DOCX)
现在可以毫无问题地并排比较。
最佳答案
反转文档的比较,应该没问题:
Document doc1 = this.word.Documents.Add(ref missing, ref missing, ref missing, ref missing);
Document doc2 = this.word.Documents.Add(ref missing, ref missing, ref missing, ref missing);
object o = doc1;
doc2.Windows.CompareSideBySideWith(ref o);
object missing = System.Reflection.Missing.Value;
object newFilename1 = "C:\\Test\\Test1.docx";
Document doc1 = this.word.Documents.Open(ref newFilename1, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing);
object newFilename2 = "C:\\Test\\Test2.docx";
Document doc2 = this.word.Documents.Open(ref newFilename2, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing);
object o = doc1;
doc2.Windows.CompareSideBySideWith(ref o);
如果您的应用程序不可见或您正在启动 Word 的新实例,您应该设置 this.word.Visible = true;
在以 CompareSideBySideWith< 运行文档打开之前
是一个 UI 例程。
关于c# - 在 Word (VSTO) 中并排比较两个 RTF 文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4962280/
我有一个用于 Outlook 的 VSTO 加载项,当我必须提供 VSTO-Runtime 时需要这些信息 安装插件。 我已经找到了这个article描述先决条件,但我可以构建不符合此描述的案例: 文
我正在尝试在针对 3.5 框架和 Excel2007 使用 c# 的 VSTO 项目中使用 SpecialCells 方法。 这是我的代码: Excel.Worksheet myWs = (Excel
我们有一个 MS Word 插件,它当前使用并重命名 Word 中的插件选项卡(到 i-report)。 这样做的问题是,如果客户端安装了其他插件,其插件的功能区也会出现在 i-report 选项卡下
编辑:海报的答案是正确的,但包含内容应为 xmlns="http://schemas.microsoft.com/office/2009/07/customui"。作为副作用,XML 文件中定义的功能
我为 Outlook/Word/Excel/PowerPoint 创建了几个 VSTO 插件。当我构建它们然后启动相关程序时,加载项已安装并且运行良好。 当我尝试手动安装 DLL 时,在“Option
我正在为 Powerpoint 2010 构建一个 VSTO 加载项,加载项集的选项适用于当前打开的文件,而不是每个用户的配置。我可以将这些选项保存在当前文件中吗(我的意思是,将自定义 XML 添加到
这个问题在这里已经有了答案: 8年前关闭。 Possible Duplicate: How to troubleshoot a VSTO addin that does not load? 我有一个
我正在开发一个 PowerPoint C# VSTO 加载项。每当更改幻灯片的标题文本时,我希望能够捕获文本更改事件。 如何附加一个自定义事件处理程序,该处理程序会在标题文本更改时触发? 最佳答案 两
如何从插件中转到下一张/上一张幻灯片 最佳答案 由于 VSTO 几乎将 Interop 用于所有(并非所有),因此您可以将 MSDN 上的示例用于 VSTO 特定的解决方案。您要的是 SlideSho
这是错误: Error 2 Cannot assign to 'Activate' because it is a 'method group' Warning 1 Ambiguity
如何从 Microsoft Visual Studio 2010 中的 excel 加载项 vsto 作为特定单元格 B1 访问。 Globals.Sheet1.Range(“B3”).Value这不
有没有办法使用 VSTO 访问 PowerPoint 演示文稿中当前事件的幻灯片?如果我能获得当前事件的形状,那也很好。我知道如何遍历幻灯片/形状,但我找不到任何属性来确定幻灯片/形状是否处于事件状态
我们计划实现 Outlook-Addin (2007/2010)。我们的第一次尝试是使用 VSTO 2010 来完成,但我们想知道在这种情况下对客户端是否有一些特殊要求。 最佳答案 Office 20
我正在使用 VSTO 4 部署我的第一个 Visual Studio Tools for Office (VSTO) 加载项。 有一些不同的选项可用于安装加载项注册表项。它可以是 HKEY_CURRE
我正在尝试将 ListObject 从 .NET 3.5 Excel 2007 VSTO 工作簿保存到新工作表(完成),并将该新工作表保存到新工作簿(完成),而该工作簿不需要 VSTO 自定义文件(!
我正在尝试诊断为什么用 C#/VSTO 3.0/VS 2008 编写的 Outlook 插件在安装后无法加载。 该插件在我安装了 Visual Studio 2008 的开发计算机上运行得非常好。不过
办公自动化、VSTO 和 Open XML SDK 之间有什么区别?我们需要所有这些还是其中一些已经过时? 最佳答案 办公自动化是指使用 COM 互操作以编程方式操作 Office 程序(或更常见的是
我有一个 OneClick Deployed VSTO Addin,我已使用最新的 Verisign 代码签名证书 (PFX) 对其进行签名。我已经确认我在电话上通过 Verisign 支持正确签名
环境:VS 2010 | .net 3.5 |展望 2007 | VSTO 3 我有一个添加新消息类型的 outlook 插件(通过从 PostItem 继承)。我想在收到新邮件时触发 Outlook
我already know如何打开文件并从 Microsoft.Office.Interop.Excel 命名空间获取 Workbook。但是有没有办法从 Microsoft.Office.Tools
我是一名优秀的程序员,十分优秀!