Использовать columns.add (...) в Word с неравной шириной столбца? - PullRequest
1 голос
/ 16 декабря 2011

Проблема у меня в том, что table.Columns.add(ref Object BeforeColumn) требует ссылки на другой столбец в таблице.Тем не менее, когда я пытаюсь получить доступ к последнему столбцу таблицы для передачи в качестве ссылки, используя table.Columns.Add(table.Columns[table.Columns.Count])

, я получаю сообщение об ошибке:

"Невозможно получить доступ к отдельным столбцам в этой коллекциипотому что таблица имеет смешанную ширину ячеек. "

По мере того, как моя текущая работа обходится, я улавливаю ошибку и вызываю table.Columns.DistributeWidth(), чтобы убедиться, что столбцы одинаковы, и выполнить остальную часть кода.Тем не менее, я теряю форматирование ширины ячеек, что вызывает сожаление.

Есть ли способ обойти это без потери ширины ячейки?

(я понимаю, что один из способов - сохранить ширину каждой ячейки перед запуском этого процесса, а затем повторно применить ширину позже, но это кажется очень дорогостоящим решением чего-то, что должно быть проще)

1 Ответ

1 голос
/ 16 декабря 2011

Я нашел один способ сделать это. Вот как я подошел к этому.

* Осторожно, Я предполагаю, что таблица однородна . то есть количество столбцов одинаково во всех строках. (Обратите внимание, что в API есть функция Table.uniform, но описание не является полным. В API-интерфейсе написано «True, если все строки в таблице имеют одинаковое количество столбцов». Однако он также проверяет, имеют ли столбцы равномерная ширина).

Вместо того, чтобы использовать table.Columns.Add(table.Columns[table.Columns.Count]) для добавления столбца перед последним, я выделил ячейку в таблице и использовал команду вставки:

//assuming table is the name of the table you want to add columns to
table.Cell(1, table.Columns.Count).Select();
word.Selection selection = table.Application.ActiveWindow.Selection;
selection.InsertColumns();

На самом деле это может быть лучший способ добавления столбцов, так как API дает вам больше возможностей для вставки (т.е. используйте InsertColumnsRight для вставки справа от столбца). Функция Columns.Add (...) по умолчанию вставляется слева от select

...