标签: openxml

使用 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
查看次数

默认的WordML单位测量?像素或点或英寸

请澄清我的疑问
WordML/DOCX默认单位测量是像素或点或EMU或英寸..?

xml docx openxml wordml

5
推荐指数
2
解决办法
2210
查看次数

如何使用OpenXML使Excel工作表标题行变为粗体

我正在使用openXMLAsp.net和c#创建一个Excel workbook,我要求使所有工作表的抬头行都应为粗体。

WorkbookStylesPart stylesPart = workbookpart.AddNewPart<WorkbookStylesPart>();
        stylesPart.Stylesheet = CreateStylesheet();
        stylesPart.Stylesheet.Save();

    }
    private static Stylesheet CreateStylesheet()
    {
        Stylesheet ss = new Stylesheet();
        Fonts fts = new Fonts();
        DocumentFormat.OpenXml.Spreadsheet.Font ft = new DocumentFormat.OpenXml.Spreadsheet.Font();
        Bold fbld = new Bold();
        FontName ftn = new FontName();
        ftn.Val = "Calibri";
        DocumentFormat.OpenXml.Spreadsheet.FontSize ftsz = new DocumentFormat.OpenXml.Spreadsheet.FontSize();
        ftsz.Val = 11;
        ft.FontName = ftn;
        ft.FontSize = ftsz;
        ft.Bold = fbld;
        fts.Append(ft);
        fts.Count = (uint)fts.ChildElements.Count;
        ss.Append(fts);
        return ss;
    }
Run Code Online (Sandbox Code Playgroud)

它正在制作所有单元格bold,我缺少将其应用于特定单元格的代码row/cells

在此先感谢,AR

c# asp.net openxml

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

将Office Open XML(OOXML)文件作为blob插入MySQL

我有很多使用扩展XML保存的Office Open XML(OOXML)文件,我试图将这些文件插入到MySQL数据库中.我可以连接好,我已经能够使用相同的语法将字符串插入到不同的数据库中.但是当我尝试将XML文件插入数据库中的blob字段时,它告诉我我的语法有问题.由于文件的格式,我应该做些什么特别的事吗?

public Insertion(Connection conn) throws SQLException, FileNotFoundException{

    System.out.println("Trying to insert Data..");

    String filePath1 = "C:/Users/SAVAGD05/Documents/RMP/Section1.XML";
    InputStream inputStream1 = new FileInputStream(new File(filePath1));
    String filePath2 = "C:/Users/SAVAGD05/Documents/RMP/Section1.XML";
    InputStream inputStream2 = new FileInputStream(new File(filePath2));
    String filePath3 = "C:/Users/SAVAGD05/Documents/RMP/Section1.XML";
    InputStream inputStream3 = new FileInputStream(new File(filePath3));

    System.out.println("It did this part");

    String SQL = "INSERT INTO (1,2,3) values(?,?,?)";
    PreparedStatement statement = conn.prepareStatement(SQL);


    statement.setBlob(1, inputStream1);
    statement.setBlob(2, inputStream2);
    statement.setBlob(3, inputStream3);
    statement.executeUpdate();


    System.out.println("Data inserted.");
    conn.close();
    System.out.println("Connection Closed");
    System.out.println("Have a Nice Day and Goodbye.");
    }


}
Run Code Online (Sandbox Code Playgroud)

这是错误:

"线程中的异常"主" …

xml mysql sql blob openxml

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

合并单元格上的OpenXML SDK边框仅应用于第一个单元格

使用OpenXML SDK将边框应用于合并的单元格区域时,边框仅显示合并范围中的第一个(左上角)单元格.我完全不知道,这让我发疯.使用生产力工具,我找不到任何有意义的差异,我有什么和预期的工作.这是我为样式表生成的XML:

    <x:borders count="2" xmlns:x="http://schemas.openxmlformats.org/spreadsheetml/2006/main">
      <x:border>
        <x:left />
        <x:right />
        <x:top />
        <x:bottom />
        <x:diagonal />
      </x:border>
      <x:border>
        <x:left />
        <x:right />
        <x:top />
        <x:bottom style="thick">
          <x:color auto="1" />
        </x:bottom>
        <x:diagonal />
      </x:border>
    </x:borders>
    <x:cellXfs xmlns:x="http://schemas.openxmlformats.org/spreadsheetml/2006/main">
      <x:xf fontId="0" />
      <x:xf fontId="1" fillId="2" applyFont="1" applyFill="1" />
      <x:xf borderId="1" applyBorder="1" />
    </x:cellXfs>
Run Code Online (Sandbox Code Playgroud)

我已经尝试了一切,在边界之前,之后等应用合并.

c# excel openxml openxml-sdk

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

指定的软件包无效。主要部分缺失

下面给出了一个合并功能,该功能旨在合并文件夹中的所有docx文件并生成合并的文件。

public  void Merge()
{  
    try
    {

        string sid = Request.QueryString["studid"];
        string stud = sid.ToString();

        string ds = HttpContext.Current.Server.MapPath(("~\\StudentBinder") + "\\Temp4\\");
        if (Directory.Exists(ds))
        {
            DirectoryInfo d = new DirectoryInfo(ds);
            FileInfo[] Files = d.GetFiles("*" + stud + "*.docx");

              // stud added for differentiating b/w users

            string[] filepaths = new string[Files.Length];
            int index = 0;

            foreach (FileInfo file in Files)
            {
                filepaths[index] = file.Name;
                index++;
            }


                using (WordprocessingDocument myDoc = WordprocessingDocument.Open(Server.MapPath(filepaths[0]), true))

                {
                    for (int i = 1; i < filepaths.Length; i++) …
Run Code Online (Sandbox Code Playgroud)

c# asp.net openxml

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

标签 统计

openxml ×10

c# ×5

ms-word ×3

asp.net ×2

docx ×2

openxml-sdk ×2

xml ×2

.net ×1

blob ×1

excel ×1

ms-office ×1

mysql ×1

sql ×1

video ×1

wordml ×1