标签: openxml

DocumentFormat.OpenXml 将图像添加到 word 文档

我正在使用 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)

c# asp.net openxml openxml-sdk

5
推荐指数
1
解决办法
1万
查看次数

将大量数据从 C# 导出到 excel 的最佳/最快方法是什么

我有使用 OpenXML 库导出数据的代码。

我有 20,000 行和 22 列,它需要很长时间(大约 10 分钟)。

是否有任何解决方案可以将数据从 C# 导出到 excel 会更快,因为我正在从 asp.net mvc 应用程序执行此操作并且许多人的浏览器超时。

c# asp.net-mvc excel openxml

5
推荐指数
1
解决办法
7392
查看次数

使用 openxml 向 docx 添加标题

我正在尝试向已经包含标题 (header1.xml) 的 docx (office 2010) 文档添加一个新标题(通过使用 openxml 代码手动添加)。我尝试使用 openxml 添加一个名为 myheader.xml 的文件,其中只有一个段落。在word打开文档时,header1的内容出现在与之前不同的位置(低2行)。

当我删除该段落时,(仅<w:hdr> </w:hdr>使用相关的名称空间)header1 的内容仍显示在不同的药水中(低 1 行)

这个问题有解决方案吗?

ms-word docx ms-office openxml

5
推荐指数
1
解决办法
8957
查看次数

OpenXML 中的制表符

我正在使用 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 标记字符串,但是我必须搜索每种类型的标记字符。这可以自动完成吗?

.net c# ms-word openxml

5
推荐指数
1
解决办法
6605
查看次数

如何根据给定的 xml 数据计算 MS Office Powerpoint Shapes 的旋转值

我想获得正确的旋转值以从给定的 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”。考虑到这一点,必须计算其适当的值,因此必须处理形状的高度和宽度以绘制形状。

openxml

5
推荐指数
1
解决办法
703
查看次数

在 OpenXML 中定位视频关系

所以我正在编写一个 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?

video openxml

5
推荐指数
1
解决办法
750
查看次数

如何知道 Word 文档中特定文本的字体大小(例如)?

这个想法很简单,但答案可能会变得复杂:

事实上,我可以检查字体大小的运行属性。

如果不存在,我需要检查应用于段落的样式以找到为字体大小定义的运行属性,然后是该样式的段落运行属性。

如果没有找到,我需要再次检查有关此样式所基于的样式的所有内容。

如果没有找到,我应该检查样式层次结构中的以下样式,然后继续直到达到默认样式。

我还需要检查上一段是否应用了样式。在这种情况下,应用的样式可以定义影响我正在处理的文本的下一段的样式。

如果没有样式影响我的段落,那么我需要查看样式部分的默认运行属性。之后,我应该查看同一部分中的默认段落属性。

如果什么都不适用,那么大小定义的责任就交给处理文档的应用程序。

我对吗?

我没有来自 OPenXML SDK 和/或 OpenXmlPowerTools 的任何帮助吗?

一个重要的方面是,除了文本字体大小之外,这个问题几乎扩展到任何段落或运行属性。

我的最终目标是根据格式确定一段文本是否是节标题(如heading1、heading2 等),但看起来很难得到像“一段文本的当前格式”这样简单的东西。为了让事情变得更难,我还需要处理(部分)编号,很多时候没有应用于段落的编号格式。

谢谢,

c# ms-word openxml openxml-sdk

5
推荐指数
1
解决办法
2738
查看次数

&lt;color indexed="81"&gt; 是什么意思?

我有一个由 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 片段,但没有解释。

standards colors spreadsheet openxml ecma

5
推荐指数
1
解决办法
2049
查看次数

OPEN XML 将自定义不可见数据添加到段落/表格

有没有办法为一个段落存储额外的数据,在用户在 MS Word 中打开和保存文档后,这些数据会被保留下来。

为此,我一直在使用 CusotmXML,但事实证明这是不可能的,因为 MS-Word 从文档结构中删除了所有 CusotmXML 元素。

每个段落或表格都有一个 ID,我想将其“配对”到我的数据源。所以稍后当我再次阅读 docx 时,我可以识别文档中每个未更改的段落/表格的来源。

ms-word openxml openxml-sdk

5
推荐指数
1
解决办法
2103
查看次数

使用 open xml sdk 只读或锁定特定单元格或行

我正在使用 open xml sdk 导出 excel。我得到了 excel 文件并将该文件复制到另一个地方,然后我插入了包含数据的新行。

我应该使用 open xml sdk 将这些行设为只读(或者我必须锁定)。

怎么做 ?

excel openxml export-to-excel openxml-sdk

5
推荐指数
1
解决办法
8838
查看次数