OpenXML在断行上保留格式(问题)

时间:2011-06-02 08:54:15

标签: c# .net ms-word openxml openxml-sdk

我在Word文档生成中遇到严重问题。

这是我用来在BookMark中发送文本的库函数:

    public void sentText(string _BkMk, string _text, bool _break, RunProperties _rProp)
    {  
            Text text = new Text(_text) { Space = SpaceProcessingModeValues.Preserve };
            Run run = new Run(new RunProperties(_rProp));   

            run.Append(text);

            Run run2 = new Run();               

            if (_break)
            {                  
               run2.Append(new Break());
               //CarriageReturn cr = new CarriageReturn();
               //run2.Append(cr);                   
            }

            foreach (BookmarkStart bookmarkStart in bookmarkMap.Values)
            {
                if (bookmarkStart.Name.Value == _BkMk)
                {
                    bookmarkStart.InsertBeforeSelf(run);
                    if (_break)
                    {
                        bookmarkStart.InsertBeforeSelf(run2);
                    }
                }
            }
runProperties中的

出现了字体,大小等... 最大的问题是当我在同一个书签中发送不同的字符串时,我需要留下一个行间距。我发送一个空字符串,或类似“”的空格,结果是一个空行,但使用不同的字体(TimesNewRoman)和大小(12)。对我来说,保留这些空行中的字体大小非常重要......

有些想法?

1 个答案:

答案 0 :(得分:1)

如果我正确理解您的问题并且您想要的只是一个空行,那么您只需插入一个空白段落,它应该遵循您设置的默认字体。这将要求您使用两个不同的运行将文本分成两个不同的段落以便工作:

public void sentText(string _BkMk, string _text, bool _break, RunProperties _rProp)
{  
     Text text = new Text(_text) { Space = SpaceProcessingModeValues.Preserve };

     Run run = new Run(new RunProperties(_rProp));          
     run.Append(text);                    

     Paragraph paragraph1 = new Paragraph();
     paragraph1.Append(run);

     foreach (BookmarkStart bookmarkStart in bookmarkMap.Values)
     {
         if (bookmarkStart.Name.Value == _BkMk)
         {
             bookmarkStart.InsertBeforeSelf(paragraph1);
             if (_break)
             {
                 bookmarkStart.InsertBeforeSelf(paragraph1);
                 bookmarkStart.InsertBeforeSelf(new Paragraph());
             }
         }
     }
}

我还建议使用段落而不是只运行,因为当你点击回车键时,Word会创建一个空段落。