我在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中显示字体、大小等。最大的问题是,当我在同一个Bookmark中发送不同的字符串时,我需要留行空格。我发送了一个空字符串,或者像“”这样的空格,结果是一个空行,但字体(TimesNewRoman)和大小(12)不同。对我来说,保留空行中的字体大小真的很重要…
有什么想法吗?
发布于 2011-06-08 20:07:58
如果我正确理解了你的问题,你想要的只是一个空白行,那么你所要做的就是插入一个空白段落,它应该遵循你已经设置的默认字体。这将需要你将你的文本分成两个不同的段落,使用两个不同的运行来工作:
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());
}
}
}
}我还建议使用段落,而不只是运行,因为当您按enter键时,Word会创建一个空段落。
https://stackoverflow.com/questions/6212379
复制相似问题