为open xml中的字符范围添加字符间距c#

时间:2016-09-05 14:29:56

标签: c# openxml openxml-sdk

如何为字符范围添加字符间距

就像我想给字符间距在单词切换 2个字符 gg spacing ="展开" 4pt


enter image description here

2 个答案:

答案 0 :(得分:1)

Open XML不仅包含SDK,还包含converting any document to C# code的工具。

了解如何使用某些单词功能的最佳方法是制作2个短文档 - 一个使用此功能,另一个使用 - 没有。然后将两个documnet转换为C#代码并比较生成的代码(例如,您可以使用WinMerge)。

答案 1 :(得分:0)

如果您希望将样式应用于段落的中间,则需要(至少)3个单独的Run元素;第一个用于开头的无格式文本,第二个用于具有间距的文本,第三个用于其余的无格式文本。

要添加字符间距,您需要向Run添加Spacing元素。 Spacing元素具有Value属性,可以在一个点的二十分之一处设置所需的间距(因此要获得4pt,您需要将值设置为80)。

以下代码将在单词gg

toggling创建一个间距为文档的文档
public static void CreateDoc(string fileName)
{
    // Create a Wordprocessing document. 
    using (WordprocessingDocument package = 
             WordprocessingDocument.Create(fileName, WordprocessingDocumentType.Document))
    {
        // Add a new main document part. 
        package.AddMainDocumentPart();

        //create a body and a paragraph
        Body body = new Body();
        Paragraph paragraph = new Paragraph();

        //add the first part of the text to the paragraph in a Run
        paragraph.AppendChild(new Run(new Text("This sentence has spacing between the gg in to")));

        //create another run to hold the text with spacing
        Run secondRun = new Run();
        //create a RunProperties with a Spacing child.
        RunProperties runProps = new RunProperties();
        runProps.AppendChild(new Spacing() { Val = 80 });
        //append the run properties to the Run we wish to assign spacing to
        secondRun.AppendChild(runProps);
        //add the text to the Run
        secondRun.AppendChild(new Text("gg"));
        //add the spaced Run to the paragraph
        paragraph.AppendChild(secondRun);
        //add the final text as a third Run
        paragraph.AppendChild(new Run(new Text("ling")));

        //add the paragraph to the body
        body.AppendChild(paragraph);

        package.MainDocumentPart.Document = new Document(body);

        // Save changes to the main document part. 
        package.MainDocumentPart.Document.Save();
    }
}

以上产生以下内容: enter image description here

请注意,您可以将Value的{​​{1}}设置为负数,文本将被压缩而不是展开。