Как получить текст в таблице Word для выравнивания по вертикали? - PullRequest
5 голосов
/ 23 февраля 2011

Я создаю документ Word на лету как проект C # VS 2010 Office Word для клиента, который хочет иметь возможность генерировать документ, который позволит использовать соответствующее количество мест для подписи для конкретной сделки.Существует таблица, которая должна быть сгенерирована с достаточным количеством строк, а затем в документе я должен создать готовые блоки для личной информации для подписавшего.

Я сейчас работаю над частью таблицы и у меня есть почти все, как я хочу, но текст во всех ячейках выровнен по вертикали.В последние несколько дней я посещал КАЖДЫЙ сайт в ВСЁМ интернете для получения актуальной информации об автоматизации Word, которая актуальна для .Net 4, VS 2010 и Office 2010. У меня есть синтаксис, который компилируется без ошибок, но не в состоянииснизу выровнять, как я хочу.Я даже ударил IntelliSense, чтобы посмотреть, смогу ли я найти другое решение.

Этот код сосредоточен на одной строке:tbl.Range.Rows [1] .Cells.VerticalAlignment = Word.WdCellVerticalAlignment.wdCellAlignVerticalBottom;Это выполняется, но текст остается заполненным гелием.

Есть ли какие-либо мастера автоматизации Word?

Ответы [ 6 ]

4 голосов
/ 20 апреля 2013

Текст, вероятно, центрирован по вертикали, но он содержит интервал между абзацами, отличающийся от "0" Итак, Word просматривает дополнительную строку как дополнительный текст, который необходимо включить в вертикальное центрирование.

Чтобы обойти это, просто выделите текст, который вы хотите центрировать по вертикали (или всю таблицу, если это то, что вы хотите). Затем перейдите к «Макету страницы» и уменьшите «Интервал» «После» до «0». Если у вас также есть пробел в верхней части текста, вам также необходимо уменьшить «Интервал» «До» до «0». Без пробелов до или после текста, фактический текст теперь будет центрирован.

4 голосов
/ 24 февраля 2011

Мне не удалось воспроизвести проблему.Этот код работает просто отлично:

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 голосов
/ 08 февраля 2013

Это старый вопрос, но я столкнулся с той же проблемой и исправил ее. Добавьте это к вашему столу:

tbl.Range.ParagraphFormat.SpaceAfter = 1; // change the 1 to how much space you want extra in your cell
1 голос
/ 28 ноября 2014

Просто, если кто-то следит за этим сообщением, мой текст также был расположен вверху ячеек. Так что для меня следующее сделало то, что мне было нужно быстрым способом

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

Пространство может быть скорректировано при необходимости.

0 голосов
/ 05 января 2015

Выделите текст в таблице -> перейдите к пункту «Параметры межстрочного интервала» -> в разделе «Интервал до / после», установите «До» и «После» в ноль пикселей (или равно).

Теперь все параметры выравнивания должныработа.

0 голосов
/ 07 февраля 2014

Следующее сработало для меня в Word 2011 для Mac - больше ничего не предлагалось на многих сайтах, казалось, изменило вертикальное выравнивание ячеек для меня.Выяснил это методом проб и ошибок.Я выделил ячейки, которые я хотел выровнять по вертикали справа внизу, и изменил расстояние между строками (в моем случае это было 1,5 для таблицы) на 1 для этих ячеек.Наконец-то это сработало.Надеюсь, это поможет.

...