我想获得正确的旋转值以从给定的 OOXML 数据绘制 MS office Powerpoint 2007 文件的形状,如下所示:
<p:sp>
<p:nvSpPr>
<p:cNvPr id="3" name="Rectangle 66" />
<p:cNvSpPr>
<a:spLocks noChangeArrowheads="1" />
</p:cNvSpPr>
<p:nvPr />
</p:nvSpPr>
<p:spPr bwMode="auto">
***<a:xfrm rot="5400000">***
<a:off x="2443049" y="-1042472" />
<a:ext cx="304800" cy="4419600" />
</a:xfrm>
<a:prstGeom prst="rect">
<a:avLst />
</a:prstGeom>
<a:ln>
<a:headEnd />
<a:tailEnd />
</a:ln>
</p:spPr>
Run Code Online (Sandbox Code Playgroud)
旋转值指定为“xfrm rot = 5400000”。考虑到这一点,必须计算其适当的值,因此必须处理形状的高度和宽度以绘制形状。
所以我正在编写一个 pptx 解析器并使用 OpenXML 来加载数据。一切都进行得很顺利(这是谎言 - 我实际上已经准备好将计算机扔到房间里然后跳出窗口),但是我我在加载视频时遇到了一个我根本无法弄清楚的问题。问题是 OpenXML 似乎无法定位指定视频 URI 的关系标记。
我所做的是编写代码来循环浏览幻灯片中的各个部分并注销它们的 ID,如下所示:
SlidePart slidePart = ...;
foreach(var curPart in slidePart.Parts)
Console.WriteLine("Part ID: " + curPart.RelationshipId);
Run Code Online (Sandbox Code Playgroud)
这样效果很好 - 它注销了 slide.xml.rels 文件中指定的所有关系 - 除了相关文件的视频关系。我可以在 rels 文件中看到视频关系,它与幻灯片中的 videoFile 标签的链接 ID 匹配,但我不知道如何通过代码获得它。我的图像加载工作正常(OpenXML 可以找到图像关系)。视频关系是否与其他关系不同?如何获取视频 URI?
这个想法很简单,但答案可能会变得复杂:
事实上,我可以检查字体大小的运行属性。
如果不存在,我需要检查应用于段落的样式以找到为字体大小定义的运行属性,然后是该样式的段落运行属性。
如果没有找到,我需要再次检查有关此样式所基于的样式的所有内容。
如果没有找到,我应该检查样式层次结构中的以下样式,然后继续直到达到默认样式。
我还需要检查上一段是否应用了样式。在这种情况下,应用的样式可以定义影响我正在处理的文本的下一段的样式。
如果没有样式影响我的段落,那么我需要查看样式部分的默认运行属性。之后,我应该查看同一部分中的默认段落属性。
如果什么都不适用,那么大小定义的责任就交给处理文档的应用程序。
我对吗?
我没有来自 OPenXML SDK 和/或 OpenXmlPowerTools 的任何帮助吗?
一个重要的方面是,除了文本字体大小之外,这个问题几乎扩展到任何段落或运行属性。
我的最终目标是根据格式确定一段文本是否是节标题(如heading1、heading2 等),但看起来很难得到像“一段文本的当前格式”这样简单的东西。为了让事情变得更难,我还需要处理(部分)编号,很多时候没有应用于段落的编号格式。
谢谢,
我有一个由 Excel 2007 创建的文档:
<fileVersion appName="xl" lastEdited="4" lowestEdited="4" rupBuild="4506" codeName="{B7FE6334-C1A2-E50D-BD3D-5F4D41BBC2E3}"/>
Run Code Online (Sandbox Code Playgroud)
...在字体定义中包含以下颜色xl/styles.xml:
<color indexed="81"/>
Run Code Online (Sandbox Code Playgroud)
我从ECMA标准中了解到<indexedColors>,xl/styles.xml如果有这样的集合,则此颜色索引指的是集合,否则指的是标准中显示的默认调色板。我的问题是这个文档不包含<indexedColors>元素,默认调色板只有66个条目,所以我不知道81指的是什么。还有其他人吗?
有趣的是,谷歌搜索color indexed="81"返回了一些包含相同内容的示例 OpenXML 片段,但没有解释。
有没有办法为一个段落存储额外的数据,在用户在 MS Word 中打开和保存文档后,这些数据会被保留下来。
为此,我一直在使用 CusotmXML,但事实证明这是不可能的,因为 MS-Word 从文档结构中删除了所有 CusotmXML 元素。
每个段落或表格都有一个 ID,我想将其“配对”到我的数据源。所以稍后当我再次阅读 docx 时,我可以识别文档中每个未更改的段落/表格的来源。
我对此有问题:
using (WordprocessingDocument wordDoc = WordprocessingDocument.Open(document, true)) { }
Run Code Online (Sandbox Code Playgroud)
使用上面的方法并尝试在 Word 中打开文档,显示文件已损坏的错误消息。有趣的是,对于 LibreOffice 文件来说是可以的。我在使用此代码之前和之后比较了 WinMarge 文件中的 xml 文件(在 docx 中),两者是相同的。差异仅在于 docx 文件的大小 - 为什么?
我想操作Office Open XMLExcel 的格式,但即使只是.zip和之间的转换.xlsx也会产生错误:
test.xlsx通过Excel创建一个非常简单的test.xlsx=>Rename作为text.xlsx.ziptext.xlsx.zip=>Extract all到名为的文件夹text.xlsxtext.xlsx文件夹 => Send to=>Compressed (zipped) folder命名text_2.xlsx.ziptext_2.xlsx.zip=>Rename作为text_2.xlsxtext_2.xlsx,出现如下错误:有谁知道那里出了什么问题吗?
我的 Excel 文件中的数值用“.”存储。小数分隔符。我想知道,excel总是使用“.” 作为小数点分隔符?如果没有,那么如何检索 Excel 文件的文化信息以正确格式化十进制值?
谢谢。
我正在将 docx 转换为 html 格式(使用 apache poi)并将其作为电子邮件发送。
生成的 html 片段看起来像这样
<html>
<head>
....
<style>
span.Normal{
font-family: 'Arial';font-size: 9.0pt;
}
span.Title{
font-family: 'Cambria';font-size: 28.0pt;color: #000000;
}
span.MySubtitle{
font-family: 'Arial';font-size: 18.0pt;color: #000000;
}
span.MyTitle{
font-family: 'Arial';font-size: 22.0pt;font-weight: bold;color: #000000;
}
...
</style>
</head>
<body>
....
<p class="Normal Title MyTitle">
<span id="_GoBack">
<span class="Normal Title MyTitle">Welcome Message</span>
<span class="Normal Title MyTitle"> </span>
<span class="Normal Title MyTitle">Username</span>
</p>
<p class="Normal Title MySubtitle">
<span class="Normal Title MySubtitle">Issues and Solutions</span>
</p>
...
</body>
</html>Run Code Online (Sandbox Code Playgroud)
Outlook 客户端无法识别多个 …
我的 C# 应用程序使用 OpenXML 创建一个 MSWord 文档,其中已包含多个表。最后一部分是添加条形图。我找不到这个案例的好例子。
感谢您的帮助!
我正在从头开始创建该文档。从...开始:
using (WordprocessingDocument myDoc = WordprocessingDocument.Create(documentStream, WordprocessingDocumentType.Document, autoSave: true))
Run Code Online (Sandbox Code Playgroud)
然后我在 C# 代码中添加新的表格和段落。在我到达条形图之前,所有这些都在起作用。我找到了一个示例项目,它将饼图插入到Word文档中,但我不明白转换它的图表类型之间的差异。这是我找到的饼图示例项目:
https://code.msdn.microsoft.com/office/How-to-create-Chart-into-a7d424f6
感谢您的帮助!
openxml ×10
c# ×2
ms-word ×2
openxml-sdk ×2
.net ×1
apache-poi ×1
colors ×1
css ×1
culture ×1
cultureinfo ×1
ecma ×1
excel ×1
outlook ×1
outlook-2010 ×1
spreadsheet ×1
standards ×1
video ×1