【问题标题】:C# Line Spacing in Word InteropWord 互操作中的 C# 行间距
【发布时间】:2018-02-13 23:31:46
【问题描述】:

我正在尝试创建一个行间距设置为“无间距”或单间距的 Word 文档。老实说,我不知道为什么这么难。

我已经尝试了所有这些示例,但都没有成功:

Paragraph para1 = document.Content.Paragraphs.Add(ref missing);
para1.LineSpacingRule = WdLineSpacing.wdLineSpaceExactly ;
para1.LineSpacing = 1;
para1.Format.SpaceBefore = 5;
para1.Format.SpaceAfter = 0;
para1.Range.Font.Name = "Times New Roman";
para1.Range.Font.Size = 12;
para1.Range.Text = "Mr. John Doe" + Environment.NewLine + "Address" + Environment.NewLine + "Anytown, AnyCity  12345";

Paragraph para1 = document.Content.Paragraphs.Add(ref missing);
para1.LineSpacingRule = WdLineSpacing.wdLineSpaceSingle ;
para1.Format.SpaceBefore = 5;
para1.Format.SpaceAfter = 0;
para1.Range.Font.Name = "Times New Roman";
para1.Range.Font.Size = 12;
para1.Range.Text = "Mr. John Doe" + Environment.NewLine + "Address" + Environment.NewLine + "Anytown, AnyCity  12345";

Paragraph para1 = document.Content.Paragraphs.Add(ref missing);
para1.LineSpacingRule = <tried them all> ;
para1.Format.SpaceBefore = 5;
para1.Format.SpaceAfter = 0;
para1.Range.Font.Name = "Times New Roman";
para1.Range.Font.Size = 12;
para1.Range.Text = "Mr. John Doe\rAddress\rAnytown, AnyCity  12345";

Paragraph para1 = document.Content.Paragraphs.Add(ref missing);
para1.LineSpacingRule = <tried them all> ;
para1.Format.SpaceBefore = 5;
para1.Format.SpaceAfter = 0;
para1.Range.Font.Name = "Times New Roman";
para1.Range.Font.Size = 12;
para1.Range.Text = "Mr. John Doe\rnAddress\rnAnytown, AnyCity  12345";

我显然遗漏了一些东西,因为每个示例结果都完全相同。地址的每一行之间有额外的间距。

有人知道怎么做吗?

【问题讨论】:

  • 你使用的是哪个库?
  • Microsoft.Office.Interop.Word,运行时 v2.0.50727
  • 我可能在这里找错树了,因为我的 Office.Interop 技能真的很差,但是一个新行不构成一个新段落吗?那么通过在段落文本中添加新行,当在 Word 中显示时,它将这些视为单独的段落,因此 SpaceBefore 和 SpaceAfter 生效?如果我错了就打我。更新:见stackoverflow.com/questions/24193619/…
  • 可能是这样,但我尝试将“SpaceBefore”和“SpaceAfter”属性设置为零。还是不行。
  • 是的!你的链接有答案。使用“\v”而不是“\r”或“\n”就可以了。非常感谢。

标签: c# ms-word office-interop


【解决方案1】:

Danel A. White 来救援!

使用This question,答案是使用“垂直标签”。直到现在我才听说过他们。

因此,将“\r\n”替换为“\v”效果很好。

    Paragraph para1 = document.Content.Paragraphs.Add(ref missing);
para1.Range.Font.Name = "Times New Roman";
para1.Range.Font.Size = 12;
para1.Range.Text = "Mr. John Doe\vAddress\vAnytown, AnyCity  12345";

【讨论】:

  • Word 中的“垂直制表符”称为手动换行符,可以通过键入Shift+Enter 将其插入到文档中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-10-20
  • 2012-03-31
  • 2014-12-22
  • 1970-01-01
  • 2017-05-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多