2011-06-02 22 views
0

我在Word文檔生成中存在嚴重問題。中斷線上的OpenXML保留格式(問題)

這是我的圖書館funcion我的書籤使用發送文本:

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卡梅斯的字體,大小,等等 最大的問題是,當我送diferent串在同一個書籤中,我需要留下一行空格。我發送一個空字符串或一個像「」的空格,結果是一個空行,但帶有不同的字體(TimesNewRoman)和大小(12)。對我來說,保持這個空行字體大小非常重要...

有些想法嗎?

+0

爲什麼我不能這樣做?:Run run2 = new Run(new RunProperties(_rProp));當我運行代碼它說,該元素是從一棵樹...現在,我創建另一個函數InsertBlank(字符串_BkMk,RunProperties _rProp),我做這個新的突破whith我想要的運行屬性(在這裏我可以做到這一點) – Displaying 2011-06-02 12:00:14

+0

請編輯您的問題,而不是留下重要信息的意見。 – 2011-06-02 15:41:40

回答

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將創建一個空的段落回車鍵。