Tag: word 2010

OpenXml表错误“每个之前需要元素”

我创建了一个Word模板,然后我通过OpenXML SDK进行处理,用数据库查询中的数据替换文档的某些内容。 该模板由一些基本文本组成,其中纯文本内容控件注入我想要替换文本的位置。 然后我使用这些控件中的文本作为查找替换值的键。 在大多数情况下,这工作正常(我只是更新Text对象的Text属性)。 在一种情况下,我用表替换文本。 在这种情况下,我在代码中构建一个表,然后用新的Table对象替换SdtContentRun对象的内容(Run对象的父对象,后者又是Text对象的父对象)… var sdtContentRunElements = from sdtContentRun in this.Document.MainDocumentPart.RootElement.Descendants() select sdtContentRun; sdtContentRunElements.ForEach(sdtContentRunElement => { Run firstRunElement = sdtContentRunElement.Descendants().FirstOrDefault(); if (firstRunElement != null) { Text firstTextElement = firstRunElement.Descendants().FirstOrDefault(); if (firstTextElement != null) { switch (firstTextElement.Text) { case TableBookmark: Table advisoryTable = new Table(…); // See below OpenXmlElement parent = firstRunElement.Parent; parent.RemoveAllChildren(); […]

Office 2007 互操作:检索RGB颜色

更新:如果您需要在office文档(格式2007)中确定rgb-color,请查看下面的答案。 有: 来自VS2010 PIA的Interop.Word.dll ver.14, VS2010 Express Edition MS Word 2010(第14版) .docx文件在没有Interop的情况下手工制作。 文件包含几个带有彩色角单元格的表。 目的:使用Interop构建另一个.docx文件,其中包含基于角落颜色填充渐变颜色的表格。 问题出现的地方:我需要将表格角落中的颜色从WdColor为System.Drawing.Color来计算渐变。 所以我使用单元格的Shading.BackgroundPatternColor属性。 我发现有时它包含正确的BGR 24位值,有时它不包含。 第二种情况仅在单元格具有主题调色板颜色之一时出现(标准和rgb调色板颜色效果很好,但主题调色板颜色会导致问题)。 例如,当我设置0x00F2F2F2 (最0x00F2F2F2的灰色)颜色时,它会在document.xml正确存储.docx文件存档,但Shading.BackgroundPatternColor属性设置为0xDC00F2FF 。 所以ColorTranslator.FromOle返回不同的颜色。 顺便说一句,这个灰色的枚举没有WdColor。 由于.Net Reflector,最硬的灰色wdColorGray05 = 0xF3F3F3 。 这意味着并非所有调色板默认颜色都对应于枚举颜色。 此外,如果我在Word中的RGB调色板中手动设置相同的颜色(即0x00F2F2F2 ),保存文件并通过Interop再次打开 – 颜色将正确设置为0x00F2F2F2 ! 问:有人有这个问题吗? 如何从Shading.BackgroundPatternColor属性中正确检索RGB颜色? 为什么此属性与document.xml存储的值不对应?

禁用Word 2010中的“另存为”按钮

我有以下代码应该禁用Word 2010中的另存为按钮。下面的方法是在Document_Startup事件中调用: private void DisableSaveAsButton() { Object MenuBar = 40; Object FileMenu = 1; Object SaveAsButton = 5; var saveAsBtn = this.ThisApplication.CommandBars[MenuBar].Controls[FileMenu].accChild[SaveAsButton] as CommandBarButton; saveAsBtn.Enabled = false; } 我希望Save as Button变灰,但它不是,它仍然有效。 我究竟做错了什么?

将文本发送到Microsoft Word 2010中的邮件合并字段

我正在使用以下代码将文本发送到一个简单的单词模板,我目前只用一个MergeField来设置它来测试我可以使用它。 我使用的代码如下: public static void ReplaceMailMergeField(string pWordDoc, string pMergeField, string pValue) { object docName = pWordDoc; object missing = Missing.Value; Word.MailMerge mailMerge; Word._Document doc; Word.Application app = new Word.Application(); app.Visible = false; doc = app.Documents.Open(ref docName, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref […]

无法在Open Xml中使用现有段落样式

我正在将HTML文件导出到Open XML wordfile。 如果在HTML 中使用,我想在该部分添加Heading1样式。 但不知何故,当我在Microsoft Word 2010中打开文档时,未应用样式。 如果我在Libre Office中打开创建的文档,则会应用一些样式。 我自己也定义了一些样式,如果我使用其中一种样式,Word和Libre Office中的一切都很顺利。 我打开了适用于Microsoft Office的Open XML SDK 2.5生产力工具 ,当我查看它提供的示例代码时,它建议: ParagraphStyleId paragraphStyleId1 = new ParagraphStyleId(){ Val = “Kop1” }; Kop1(而不是Heading1)是因为我的Word是荷兰语所以我的模板是荷兰语,但这并没有解决问题。 在此代码示例中,我创建了段落并向其添加样式和文本: using (wordDocument = WordprocessingDocument.Open(documentStream, true)) { MainDocumentPart mainPart = wordDocument.MainDocumentPart; WP.Body body = wordDocument.MainDocumentPart.Document.Body; WP.Paragraph para = body.AppendChild(new WP.Paragraph()); StyleDefinitionsPart part = wordDocument.MainDocumentPart.StyleDefinitionsPart; if (part != […]