我正在使用 openXml SDK 创建一个简单的 word 文档。到目前为止它正在工作。现在如何将文件系统中的图像添加到此文档?我不在乎它在文档中的哪个位置,只是因为它就在那里。谢谢!这是我到目前为止所拥有的。
string fileName = "proposal"+dealerId +Guid.NewGuid().ToString()+".doc";
string filePath = @"C:\DWSApplicationFiles\Word\" + fileName;
using (WordprocessingDocument wordDoc = WordprocessingDocument.Create(filePath, WordprocessingDocumentType.Document, true))
{
MainDocumentPart mainPart = wordDoc.AddMainDocumentPart();
mainPart.Document = new Document();
//create the body
Body body = new Body();
DocumentFormat.OpenXml.Wordprocessing.Paragraph p = new DocumentFormat.OpenXml.Wordprocessing.Paragraph();
DocumentFormat.OpenXml.Wordprocessing.Run runParagraph = new DocumentFormat.OpenXml.Wordprocessing.Run();
DocumentFormat.OpenXml.Wordprocessing.Text text_paragraph = new DocumentFormat.OpenXml.Wordprocessing.Text("This is a test");
runParagraph.Append(text_paragraph);
p.Append(runParagraph);
body.Append(p);
mainPart.Document.Append(body);
mainPart.Document.Save();
}
Run Code Online (Sandbox Code Playgroud) 我有使用 OpenXML 库导出数据的代码。
我有 20,000 行和 22 列,它需要很长时间(大约 10 分钟)。
是否有任何解决方案可以将数据从 C# 导出到 excel 会更快,因为我正在从 asp.net mvc 应用程序执行此操作并且许多人的浏览器超时。
我正在尝试向已经包含标题 (header1.xml) 的 docx (office 2010) 文档添加一个新标题(通过使用 openxml 代码手动添加)。我尝试使用 openxml 添加一个名为 myheader.xml 的文件,其中只有一个段落。在word打开文档时,header1的内容出现在与之前不同的位置(低2行)。
当我删除该段落时,(仅<w:hdr> </w:hdr>使用相关的名称空间)header1 的内容仍显示在不同的药水中(仅低 1 行)
这个问题有解决方案吗?
我正在使用 OpenXML 将文本添加到段落节点。我正在包装 OpenXML 方法,并有以下方法来附加文本,这对没有标记的文本工作正常。
public void AddPlainParagraphText(string text)
{
m_wordprocessingDocument.MainDocumentPart.Document.Body.AppendChild(
new Paragraph(
new Run(
new Text(text))));
}
Run Code Online (Sandbox Code Playgroud)
我知道对于制表符等特殊字符,您需要使用 OpenXML 的TabChar类并将其附加到 Text 项。我试图弄清楚我是否可以让这个自动化,OpenXML 会在文本中看到 '\t',并自动设置 XML 以通过 . 我想我可以用 \t 标记字符串,但是我必须搜索每种类型的标记字符。这可以自动完成吗?
我想获得正确的旋转值以从给定的 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 时,我可以识别文档中每个未更改的段落/表格的来源。
我正在使用 open xml sdk 导出 excel。我得到了 excel 文件并将该文件复制到另一个地方,然后我插入了包含数据的新行。
我应该使用 open xml sdk 将这些行设为只读(或者我必须锁定)。
怎么做 ?
openxml ×10
c# ×4
ms-word ×4
openxml-sdk ×4
excel ×2
.net ×1
asp.net ×1
asp.net-mvc ×1
colors ×1
docx ×1
ecma ×1
ms-office ×1
spreadsheet ×1
standards ×1
video ×1