C#, Interop.Word - ошибка "Отсутствует доступ к отдельным строкам, поскольку таблица имеет ячейки, объединенные по вертикали."

Или в английском варианте Cannot access individual rows in this collection because the table has vertically merged cells. Как несложно догадаться ошибка возникает при попытке объединения ячеек в таблице документа Word по вертикали, в колонках, точнее говоря при попытке обратиться к ячейкам в таблице где хоть в одной колонке уже произошло вертикальное объединения ячеек. Я поймал ее при попытке последовательно объединять ячейки в разных колонках, другие ловят при банальном чтении таблицы.

Судя по всему это глюк в интерфейсе работы с таблицами Word. Обойти его можно отказавшись от обращения к строкам таблицы и обращаясь напрямую к ячейкам через метод Table.Cell. Например при обьединении прямоугольного массива ячеек можно внести следующие изменения в код

// старый код обращался к ячейке через коллекцию строк //_table.Rows[cellOneRowIndex].Cells[cellOneColIndex]. Merge(_table.Rows[cellTwoRowIndex]. Cells[cellTwoColIndex]);

//новый обращается через общий массив ячеек
_table.Cell(cellOneRowIndex, cellOneColIndex). Merge(_table.Cell(cellTwoRowIndex, cellTwoColIndex));

Комментарии

C#, Interop.Word - ошибка "Отсутствует доступ к отдельным строкам, поскольку таблица имеет ячейки, объединенные по вертикали." — Комментарии (6)

  1. Как-то тоже пришлось решать подобную задачу.
    Пошел по пути:
    1. Формирование перечня существующих ячеек таблицы.
    2. Обработка перечня существующих ячеек таблицы.
    -------------
    Решение, правда, на Delphi.
    Так что здесь приводить смысла нет.
    Но можно посмотреть здесь (с исходниками):
    https://www.sql.ru/forum/688692/zapolnenie-tablic-v-word-obedinennye-po-vertikali-yacheyki

Добавить комментарий для Дмитрий Отменить ответ

Ваш e-mail не будет опубликован. Обязательные поля помечены *


*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>