【问题标题】:How do you get text in a Word table to vertical align?如何让 Word 表格中的文本垂直对齐?
【发布时间】:2011-02-23 19:55:05
【问题描述】:

我正在为一个客户创建一个 Word 文档作为 C# VS 2010 Office Word 项目,该客户希望能够生成一个文档,该文档将允许特定交易的适当数量的签署位置下降。需要生成一个包含足够行数的表,然后在文档中我必须为每个签名者的个人信息生成预制块。

我现在正在处理表格部分,几乎所有东西都随心所欲,但所有单元格中的文本都是垂直顶部对齐的。在过去的几天里,我访问了整个 Internet 中的每个站点,以获取有关 .Net 4、VS 2010 和 Office 2010 最新的 Word 自动化的最新信息。我的语法可以编译没有错误但无法编译底部对齐,如我所愿。我什至用 IntelliSense 进行了测试,看看是否能找到另一种解决方案。

此代码专注于单行:
tbl.Range.Rows[1].Cells.VerticalAlignment = Word.WdCellVerticalAlignment.wdCellAlignVerticalBottom; 这会运行,但文本仍然充满氦气。

有任何 Word 自动化向导吗?

【问题讨论】:

  • 其他因素可能使它看起来好像不起作用。例如,检查行高(表格工具|布局|表格|属性,行选项卡)。如果指定高度不够大,则垂直对齐似乎不起作用。尝试单元格选项卡、选项和单元格边距。尝试在 Word 中手动执行您想要完成的操作,看看它是否仍然无法正常工作。

标签: c# visual-studio-2010 ms-word automation


【解决方案1】:

我无法重现该问题。这段代码工作得很好:

using Microsoft.Office.Interop.Word;
class Program
{
    static void Main(string[] args)
    {
        DocumentClass document = new DocumentClass();
        object defaultTableBehavior = null, autoFitBehavior = null;
        Table tbl = document.Content.Tables.Add(document.Content, 2, 2, ref defaultTableBehavior,
            ref autoFitBehavior);
        tbl.Rows[2].Cells[2].Range.InsertAfter("This is a test.");
        tbl.Rows[2].Cells[2].Range.ParagraphFormat.SpaceAfter = 0f;
        tbl.Rows[2].Cells.Height = 50f;
        tbl.Range.Rows[2].Cells.VerticalAlignment = WdCellVerticalAlignment.wdCellAlignVerticalBottom;
    }
}

我怀疑肯定有其他问题,比如后面的段落间距,或者选择了错误的范围?

【讨论】:

    【解决方案2】:

    文本可能垂直居中,但它包含“0”以外的段落间距。因此,Word 将额外的行视为需要包含在垂直居中的附加文本。

    要解决这个问题,只需突出显示您想要垂直居中的文本(或整个表格,如果您想要的话)。然后转到“页面布局”并将“间距”“之后”减少为“0”。如果您的文本顶部也有空格,则还需要将“间距”“之前”减少为“0”。文本前后没有间距,实际文本现在将居中。

    【讨论】:

      【解决方案3】:

      这是一个老问题,但我刚刚遇到了同样的问题并解决了这个问题。将此添加到您的表中:

      tbl.Range.ParagraphFormat.SpaceAfter = 1; // change the 1 to how much space you want extra in your cell
      

      【讨论】:

        【解决方案4】:

        如果有人在跟进这篇文章,我的文字也被安排在单元格的顶部。 所以对我来说,以下是我需要的快速方式

        oTable.Range.ParagraphFormat.SpaceAfter = 6;
        oTable.Range.ParagraphFormat.SpaceBefore = 6;
        

        如果需要,可以调整空间。

        【讨论】:

          【解决方案5】:

          以下内容在 Word 2011 for Mac 中对我有用 - 许多网站中的其他建议似乎都没有改变我的垂直单元格对齐方式。通过反复试验发现了这一点。 我突出显示了我想要垂直对齐到右下角的单元格,并将这些单元格的行间距(在我的例子中是 1.5 的表格)更改为 1。它终于奏效了。希望对您有所帮助。

          【讨论】:

            【解决方案6】:

            突出显示表格中的文本 --> 转到行距选项 --> 在 Spacing Before/After 部分中将 Before 和 After 设置为 0 px(或等于)。

            所有对齐选项现在应该可以工作了。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2016-03-23
              • 1970-01-01
              • 2012-08-20
              • 2011-06-22
              相关资源
              最近更新 更多