Tag: ms word

在C#中列出word文档的属性

我想要一些帮助来检索word文档的属性。 我已经获得了标题,主题和作者。 但我似乎无法获得“Date Last Saved”属性,我不知道如何获取属性名称列表。 我的代码如下所示: using System; using System.Collections.Generic; using System.Text; using Microsoft.Office.Interop; using System.Reflection; using System.IO; namespace MetaDataSorter { class Program { static void Main(string[] args) { String dirName = @”H:\projekt\test raw files”; String fileNameString = @”H:\projekt\raw files\vgahm\1 NTFS\Raw Files\Microsoft Word Document\1-300\FILE006.DOC”; object fileName = (object)fileNameString; object missing = System.Reflection.Missing.Value; Microsoft.Office.Interop.Word.Application wordApp = […]

Interop Word – 从文档中删除页面

使用Word Interop库从Document对象中删除特定页面的最简单,最有效的方法是什么? 我注意到有一个Pages属性可以扩展/实现IEnumerable。 可以简单地删除数组中的元素,并从文档中删除页面吗? 我也看过Ranges和Section的例子,但使用起来看起来并不优雅。 谢谢。

Word ApplicationClass问题

我正在使用Microsoft.Office.Interop.Word.ApplicationClass来读取一组Word文档。 我能够很好地阅读它们,但我注意到用于阅读这些文档的过程实际上根据Windows任务管理器实际上没有结束。 从谷歌开始,似乎没有其他人有这个问题,这让我相信我要么做了一些根本错误的事情,要么我没有能力有效地将我的问题用于谷歌搜索。 我对C#比较新,所以我怀疑前者。 在下面找到我用来创建文档“reader”实例的代码。 private void readDoc(string docPath) { Word.ApplicationClass wordApp = new Word.ApplicationClass(); object nullObj = System.Reflection.Missing.Value; object roObj = true; object objFile = docPath; try { Word.Document doc = wordApp.Documents.Open(ref objFile, ref nullObj, ref roObj, ref nullObj, ref nullObj, ref nullObj, ref nullObj, ref nullObj, ref nullObj, ref nullObj, ref nullObj, ref […]

COMexception0x800A11F9 – 无法激活应用程序

我有一个C#2.0(WinForms)项目,我尝试激活word 2003(在系统上安装了word)。 通过使用以下代码: private void ActivateWord() { this.Activate(); if (m_WordDocument != null) { try { m_WordDocument.Activate(); if (m_WordDocument.Application != null) { m_WordDocument.Application.Visible = true; m_WordDocument.Application.Activate(); } } catch (COMException comEx) { ShowError(this, comEx.Message, false); } } } 当我的应用程序执行m_WordDocument.Application.Activate()时,我收到一个COMexception0x800A11F9。 Stacktrace: “System.Runtime.InteropServices.COMException (0x800A11F9): Cannot activate application at Word.ApplicationClass.Activate() at Roxit.SquitXO.GUI.DocumentCreatie.frmSelectVeld.ActivateWord()” 可能是造成这个问题的原因是什么?

如何从WPF自动化Microsoft Word 2003?

我有一个WPF窗口(使用c#作为后面的代码),它有一些文本字段。 我想要的是,当用户按下打印按钮时,我想获取这些字段的信息并使用Microsoft Word 2003模板。 该模板有一些空白字段可以填充来自WPF寡妇的这些信息。 我如何自动执行此操作?

Word VSTO覆盖CTRL + Z / CTRL + Y.

我正在寻找一种方法来覆盖Word 2010中的撤消( Ctrl Z )/重做( Ctrl Z )命令(C#+ VSTO)。 可能吗 ? 我设法捕获复制/粘贴命令,但似乎Undo / Redo不是RibbonUI中的命令,如复制/粘贴。

替换Word 2003文档中的MergeField并保留样式

我一直在尝试创建一个库来替换Word 2003文档中的MergeFields,一切正常,但是当我更换它时,我失去了应用于该字段的样式,有没有办法保留它? 这是我用来替换字段的代码: private void FillFields2003(string template, Dictionary values) { object missing = Missing.Value; var application = new ApplicationClass(); var document = new Microsoft.Office.Interop.Word.Document(); try { // Open the file foreach (Field mergeField in document.Fields) { if (mergeField.Type == WdFieldType.wdFieldMergeField) { string fieldText = mergeField.Code.Text; string fieldName = Extensions.GetFieldName(fieldText); if (values.ContainsKey(fieldName)) { mergeField.Select(); application.Selection.TypeText(values[fieldName]); } […]

Word Automation – 禁用警报

我正在自动化Word,所以我想抑制所有警报。 Word.Application word = new Word.Application(); word.DisplayAlerts = Microsoft.Office.Interop.Word.WdAlertLevel.wdAlertsNone; 我使用上面列出的代码,但我不断从Word获取消息 – 例如,文档已经打开。 有没有办法避免这种情况? 如何压制所有那些愚蠢的消息框? 编辑 : 对于所有答案的所有答案,我想看门狗真的是唯一的选择。 糟糕的是,去年没有任何改变。 线程可以在没有真实答案的情况下关闭。

如何准备Word 2007文档,以便C#可以从语义上提取数据?

我有一个朋友在Microsoft Word 2007中写了一本400页的书 。 在整本书中,他有200个故事,每个故事由许多段落组成。 当他完成这本书的编写后,他希望将嵌入在他的Word文档中的每个故事的文本复制到数据库表中,例如: Title, varchar(200) Description, text Content, text 我们不希望将每个故事复制并粘贴到数据库中,但希望程序自动将标记的数据从Word文件中提取到数据库中的相应字段中。 他必须在Microsoft Word中将每组段落表示为“故事内容”,将每个标题表示为“故事标题”等。先决条件是此标记在文档中不可见。 我知道Word 2007文件基本上是压缩的XML文件所以我认为这是可能的,我认为样式表是我们需要的,但我如何准确地准备Word文档,以便在添加故事时正确标记它们? 我假设C#4.0的新COM Interopfunction是我需要分析Word文件并仅从嵌入式故事中检索标题,描述和内容,但我如何在技术上做到这一点? 有人有例子吗? 有没有人有经验做这样的项目(阅读Microsoft Word作为semnatic数据文件),他们可以分享?

如何使用c#以编程方式从Word文档中删除一行?

我有一些代码来查找和替换word文档中的字段与数据集中的值。 Word.Document oWordDoc = new Word.Document(); foreach (Word.Field mergeField in oWordDoc.Fields) { mergeField.Select(); oWord.Selection.TypeText( stringValueFromDataSet ); } 在某些情况下, stringValueFromDataSet为空,除了不插入任何内容外,我想实际删除当前行。 知道我怎么能这样做吗?