【问题标题】:Remove spacing after paragraph in Word 2007 with VSTO使用 VSTO 在 Word 2007 中删除段落后的间距
【发布时间】:2017-11-29 01:41:02
【问题描述】:

我正在 C# 中创建和填充 Word 2007 表。当我在 Word 中查看结果时,每个单元格都在文本后附加了额外的垂直空间。在Word中可以通过“页面布局”/段落/间距进行调整,初始值为10pt。

---------------------------------------------------
| Text...     | Text....  | More text...          |
|             |           |                       | <- Extra spacing
---------------------------------------------------
|             |           |                       |

如何使用 VSTO 进行更改?

我尝试录制一个宏,希望在 VB 代码中得到一些答案——它似乎没有响应间距值的变化。

我在 MSDN 上的 VSTO 文档中找不到任何相关内容。

编辑: 使用 Word 模板,我可以标记要填充的区域并将间距设置为 0。然后通过我的表格继承它 - 因此它现在可以工作。但是,如果能够从 C# 中控制间距而不依赖于 Word 中的继承,那就太好了。

【问题讨论】:

    标签: c# ms-word vsto


    【解决方案1】:

    根据 Jose Anton Bautista,解决方案如下:

    Word.Document currentDocument;
    currentDocument.Paragraphs.SpaceAfter = 0;
    

    或者

    Word.Table table;
    table.Range.Paragraphs.SpaceAfter = 0;
    

    这很好用,对我来说,它显示了我还可以在哪里访问文档元素的各种属性。

    【讨论】:

    • 优秀。这个“Range.Paragraphs.SpaceAfter = 0”也适用于单独的段落 - 如果我们在文档中有更多段落,则无需申请文档。我们也可以将其应用于每个段落
    【解决方案2】:

    我已经使用内置样式“表格网格”来删除单元格中的段落间距样式(Word 2007 默认,插入>表格使用相同的样式):

    Word.Document Doc = Globals.ThisDocument.Application.ActiveDocument;
    Word.Table WordTable = Doc.Tables.Add(curSel.Range, 8, 5, ref missing, ref missing);
    
    //Table Style
    object tableStyle = "Table Grid";
    WordTable.set_Style(ref tableStyle);
    

    【讨论】:

    • @Mike:我尝试了您的解决方案,但在 WordTable.set_Style(ref tableStyle); 处出现异常。但我找到了另一个解决方案。
    • 异常可能来自未找到样式“表格网格”。我会告诫不要对每个表格进行单独的格式更改,而是为所有具有相同格式的表格创建表格样式。
    【解决方案3】:

    另外你可能需要设置LineSpacingRule

    myTable.Range.Paragraphs.LineSpacingRule = WdLineSpacing.wdLineSpaceSingle;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多