标签: openxml

Open XML (Microsoft Word):C# 表对齐


如何在打开的 xml 中将表格对齐到 word 文档的中间?
这是我的代码,我想将表格居中对齐。

这是我的代码。我正在尝试使用 TableJustification,但它似乎不起作用

using (WordprocessingDocument wordDoc = WordprocessingDocument.Create(filepath, WordprocessingDocumentType.Document))
            {
                MainDocumentPart mainPart = wordDoc.AddMainDocumentPart();
                mainPart.Document = new Document();
                Body body = mainPart.Document.AppendChild(new Body());

                Run run = new Run();
                // Goes through all of the forms
                foreach (var form in forms)
                {

                    Table table = new Table();
                    // Initialize all of the table properties
                    TableProperties tblProp = new TableProperties(
                        new TableBorders(
                            new TopBorder() { Val = new EnumValue<BorderValues>(BorderValues.BasicBlackSquares), Size = 16 },
                            new LeftBorder() { Val …
Run Code Online (Sandbox Code Playgroud)

c# ms-word openxml

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

向 OpenXml 中的表格或图形添加标题

我正在尝试在 OpenXml 中创建此结构:

<P>
 <Table />
 <Caption>Table 1 - Some Text 1 </Caption>
 <Picture />
 <Caption>Figure 1 - Some Text 2 </Caption>
</P>
Run Code Online (Sandbox Code Playgroud)

就代码而言,我有:

var currentLine = new Paragraph();
currentLine.AppendChild(new Run(elem));  -> Where the elem is Table
...
currentLine.AppendChild(new Run(elem2)); -> Where the elem2 is Drawing
Run Code Online (Sandbox Code Playgroud)

所以我只怀念添加标题的方式,与我在 MS Word 参考资料 -> 插入标题中可以执行的标题相同。

一些如何实现这一点的信息将非常感激。

openxml caption

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

通过openxml将表格插入word以及如何设置适合word的宽度

我想通过openxml创建一个word文件并在其中插入一个表格。现在我不知道如何设置网格的宽度以适应 word 文件。请帮我。谢谢

openxml

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

OpenXml Word 脚注

我正在尝试遍历 Word 文档并从中提取脚注,并参考它们在段落中的位置。
我不知道该怎么做。

我看到为了获得所有脚注,我可以这样做:

FootnotesPart footnotesPart = doc.MainDocumentPart.FootnotesPart;
if (footnotesPart != null)
{
    IEnumerable<Footnote> footnotes = footnotesPart.Footnotes.Elements<Footnote>();

    foreach (var footnote in footnotes)
    {
         ...
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,我不知道如何知道每个脚注在段落中的位置。
例如,我想添加一个脚注,并将它放在之前作为脚注的文本内的括号中。
我该怎么做呢?

c# ms-word docx openxml openxml-sdk

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

使用 OpenXml 将行动态添加到现有 Word 文档中的表中

我正在使用 OpenXml 处理 Word 文档。现在我的 word 文档 (docx) 宽度标题中有两个表格,现在我需要向这些表格添加动态行。

c# ms-word openxml tabular

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

如何根据openxmlelement获取页码

对于 Paragraph 对象,如何使用 Open XML SDK 2.5 确定它位于哪个页面上?

我已经获得了文档中的所有子元素,并使用 this 获取了内部文本。

   foreach (var i in mainPart.Document.ChildElements.FirstOrDefault().ChildElements)
        {
            ParagraphElements.Add(i); //openxmlelement list
        }
Run Code Online (Sandbox Code Playgroud)

我想获取相应段落的页码。例如,我将“这是标题 1”标记为样式标题 1,这将在目录中更新。所以我需要传递页码

提前致谢

openxml tableofcontents page-numbering openxml-sdk

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

哪个更好的选择 OpenXml 或 Microsft.Office.Interop.Excel 在 c# 中读取 excel 文件?

我正在使用 .NET 4.6 框架,我必须在 asp.net/c# 代码中阅读多页预定义模板化 excel 工作簿,我知道使用DocumentFormat.OpenXml.dllMicrosoft.Office.Interop.Excel解决问题的两种方法。 dll程序集。

但是我很困惑使用哪个,因为我没有专业知识来决定。我的问题是;在解决方案中使用它们的利弊是什么?有比另一个更好的吗?你能解释一下,让我选一个吗?

c# asp.net openxml

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

如何在 C# 中使用 OpenXML 更新所有字段(交叉引用)?

在 Word 中有一个选项“更新字段”。我想加载一个 Word 模板并用一些数据填充 FormFields。还有一些字段是对其他字段的引用。

使用 Interop,我可以简单地编写“UpdateAllFields”,但是 OpenXML 中的等价物是什么?

谢谢 :)

c# ms-word openxml openxml-sdk

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

如何将 OpenXML 从模板创建的 Word 文档转换为 MemoryStream?

我需要在 ASP.NET 控制器方法中将文档作为 MemoryStream 返回以在网页上下载它。我不想把这个文档保存在文件上,然后把它读成 MemoryStream 并返回。注意:重载方法 WordprocessingDocument.CreateFromTemplate(template) 没有流选项 vs WordprocessingDocument.Create(stream, ...)

保存临时文件的解决方案如下。

    public static MemoryStream GetWordDocumentFromTemplate()
    {
        string tempFileName = Path.GetTempFileName();
        var templatePath = AppDomain.CurrentDomain.BaseDirectory + @"Controllers\" + templateFileName;

        using (var document = WordprocessingDocument.CreateFromTemplate(templatePath))
        {
            var body = document.MainDocumentPart.Document.Body;

            //add some text 
            Paragraph paraHeader = body.AppendChild(new Paragraph());
            Run run = paraHeader.AppendChild(new Run());
            run.AppendChild(new Text("This is body text"));

            OpenXmlPackage savedDoc = document.SaveAs(tempFileName); // Save result document, not modifying the template
            savedDoc.Close();  // can't read if it's open
            document.Close();
        }

        var …
Run Code Online (Sandbox Code Playgroud)

c# memorystream ms-word openxml

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

AbstractNum 和 NumberingInstance 的用途

1)

我在想他的目的AbstractNum是重用编号格式并NumberingInstance创建新列表(从 1 开始)。但是我注意到的是,如果在 1 处重新启动列表的第二个实例,openxml 文档将具有该AbstractNum元素的精确副本(唯一的区别是Nsid)并NumberingInstance指向该AbstractNum元素。

例如:如果我有一个列表如下

  1. 第 1 项
  2. 第 2 项

另一个列表如下,样式完全相同,但从 1 重新开始

  1. 第 3 项
  2. 第 4 项

这将产生AbstractNum(具有相同定义)的两个副本和NumberingInstance. AbstractNum如果样式相同,重复定义 ( )的目的是什么

2)

如果需要AbstractNum为每个创建副本NumberingInstance,有人可以告诉我如何生成Nsid值(十六进制)。看起来如果你有两个AbstractNum相同的Nsid也会导致列表编号的延续(而不是第二个列表从 1 开始)但我不知道如何生成一个唯一的Nsid

openxml

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