Excel interop объединение ячеек

Обновлено: 07.07.2024

Настоящая документация является предварительной и может быть изменена. В этом разделе показано, как использовать классы в Пакет Open XML SDK 2.5 для Office для программного объединения двух смежных ячеек в электронной таблице.

Для компиляции кода, представленного в этом разделе, требуются следующие директивы сборки.

Получение объекта SpreadsheetDocument

В пакете Open XML SDK класс SpreadsheetDocument представляет пакет документа Excel. Чтобы открыть документ Excel и работать с ним, создайте экземпляр класса SpreadsheetDocument из документа. После создания экземпляра вы сможете получить доступ к основной части книги, содержащей листы. Текст в документе представляется в пакете в виде XML с помощью разметки SpreadsheetML.

Чтобы создать экземпляр класса из документа, вызывается один из методов перегрузки Open(). Доступно несколько методов с разными сигнатурами. В примере кода в этой статье используется метод Open(String, Boolean) с сигнатурой, требующей два параметра. Первый параметр — это строка полного пути, представляющая открываемый документ. Второй параметр — это значение true или false, которое указывает, будет ли файл открыт для редактирования. Если этот параметр имеет значение false, любые изменения, внесенные в документ, не будут сохранены.

Код, который вызывает метод Open, показан в следующем операторе using:

Оператор using представляет рекомендуемую альтернативу типичной последовательности методов .Open, .Save, .Close. Он гарантирует, что метод Dispose (внутренний метод, используемый Open XML SDK для очистки ресурсов) вызывается автоматически при достижении закрывающая фигурной скобки. Блок, который следует за оператором using, устанавливает область объекта, который создается или именуется в операторе using. В этом случае это document.

Базовая структура документа SpreadsheetML

Базовая структура документа SpreadsheetML состоит из элементов Sheets и Sheet, ссылающихся на листы объекта Workbook. Для каждого объекта Worksheet создается отдельный XML-файл. Например, элемент SpreadsheetML для книги с двумя листами MySheet1 и MySheet2 находится в файле Workbook.xml и показан в следующем примере кода:

XML-файл листа содержит один или несколько элементов уровня блока, например SheetData. Элемент sheetData представляет таблицу ячеек и содержит один или несколько элементов Row. Элемент row содержит один или несколько элементов Cell. Каждая ячейка содержит элемент CellValue, представляющий значение ячейки. Например, элемент SpreadsheetML для первого листа книги, содержащего только значение 100 в ячейке A1, находится в файле Sheet1.xml и показан в следующем примере кода:

С помощью Пакет SDK 2.5 Open XML можно создать структуру и содержимое документа, использующие строго типизированные классы, соответствующие элементам SpreadsheetML. Эти классы можно найти в пространстве имен DocumentFormat.OpenXML.Spreadsheet. В следующей таблице перечислены имена классов, соответствующие элементам workbook, sheets, sheet, worksheet и sheetData.

Элемент SpreadsheetML Класс пакета Open XML SDK 2.5 Описание
книга DocumentFormat.OpenXML.Spreadsheet.Workbook Корневой элемент основной части документа.
sheets DocumentFormat. OpenXML.Spreadsheet.Sheets Контейнер для структур уровня блока, таких как sheet, fileVersion и других элементов, описанных в спецификации ISO/IEC 29500.
лист DocumentFormat.OpenXML.Spreadsheet.Sheet Лист, указывающий на файл определения листа.
лист DocumentFormat.OpenXML.Spreadsheet.Worksheet Файл определения лист с данными листа.
sheetData DocumentFormat.OpenXML.Spreadsheet.SheetData Таблица ячеек, сгруппированная по строкам.
row DocumentFormat.OpenXml.Spreadsheet.Row Строка в таблице ячеек.
c DocumentFormat.OpenXml.Spreadsheet.Cell Ячейка в строке.
v DocumentFormat.OpenXml.Spreadsheet.CellValue Значение ячейки.

Как работает пример кода

После открытия файла электронной таблицы для редактирования код проверяет, существуют ли указанные ячейки. Если они не существуют, код создает их, вызывая метод CreateSpreadsheetCellIfNotExist и добавляя их к соответствующему объекту Row.

Чтобы получить имя столбца, код создает регулярное выражение в соответствии с именем столбца из имени ячейки. Оно сопоставляет любую комбинацию прописных и строчных букв. Дополнительные сведения о регулярных выражениях см. в справочнике Элементы языка регулярных выражений. Код получает имя столбца, вызывая метод Regex.Match.

Для получения индекса строки код создает регулярное выражение, чтобы выделить часть имени столбца с индексом строки. Оно сопоставляет любую комбинацию десятичных цифр. Следующий код создает регулярное выражение, чтобы выделить индекс строки из имени столбца, состоящий из десятичных цифр.

Пример кода

Приведенный ниже код объединяет две смежные ячейки в пакете документа SpreadsheetDocument. При объединении двух ячеек сохраняется содержимое только одной из них. В языках с написанием слева направо сохраняется содержимое верхней левой ячейки, а в языках с написанием справа налево — содержимое верхней правой ячейки. Можно вызвать метод MergeTwoCells, используя следующий пример кода, который объединяет ячейки B2 и C2 на листе "Jane" в файле "Sheet9.xlsx":

Объединение ячеек – известная команда в Excel. Однако на выполнение этой операции часто уходит много времени. В данной статье рассмотрим, что подразумевают под объединением ячеек, и как быстро выполнить эту операцию. Выбрав оптимальный варианты, вы сэкономите много времени.

Формат ячеек

Команда Excel Правая кнопка мыши → Формат ячеек → Выравнивание → Отображение → объединение ячеек удаляет границы между ячейками в выделенном диапазоне. В результате получается одна большая ячейка. На картинке показано объединение ячеек одной строки и трех столбцов.

Объединение ячеек Excel

Таким же способом можно объединить любой прямоугольной диапазон. После объединения ячеек содержимое часто центрируют. На ленте во вкладке Главная даже есть специальная команда Объединить и поместить в центре.

Команда объединить и поместить в центре

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

Надпись в центре объединенной ячейки

Выглядит красиво, но крайне непрактично. Если выделить столбец комбинацией клавиш Ctrl + пробел, то диапазон расширится на все столбцы, которые захватывает объединенная ячейка. Возникнут и другие проблемы: при копировании, не работает в таблице Excel, нельзя автоматически подогнать ширину столбца и др. В общем, объединение ячеек сулит много неудобств в дальнейшей работе. Поэтому в большинстве случаев объединение ячеек лучше не применять.

Как найти объединенные ячейки в Excel

Бывает, что в файле уже есть объединенные ячейки и они мешают нормальной работе. Например, в отчете из 1С или при работе с чужим файлом Excel. Тогда их нужно как-то быстро найти и отменить объединение. Как это быстро сделать? Выполните следующие шаги.

Как убрать объединение ячеек в Excel

Для отмены объединения сразу на всем листе Excel выполните следующие действия.

  1. Выделите все ячейки на листе. Можно щелкнуть на треугольнике, расположенном на пересечении заголовков строк и столбцов, либо горячей комбинацией Ctrl + A (один или два раза).
  2. Повторно примените команду Главная (вкладка) → Выравнивание (группа) → Объединить и поместить в центре.

Все объединенные ячейки снова станут нормальными. Если что-то пойдет не так, отмените последнее действие.

Горячие клавиши объединения ячеек в Excel

К сожалению, в Excel нет стандартных горячих клавиш для объединения ячеек. Тем не менее, у каждой команды есть свой клавиатурный эквивалент и его можно узнать. Для этого следует нажать клавишу Alt, на ленте под каждой вкладкой появится буква, нажав на которую, вы переходите внутрь этой вкладки.

Буквы под командами после нажатия Alt

Затем буквы появятся под каждой командой или выпадающим списком команд. Таким образом можно определить последовательность клавиш вызова нужной команды. Для объединения и центрирования ячеек в моей версии Excel необходимо последовательно нажать Alt – Я – Щ – Б. Это был первый способ.

Второй способ. Любым способом объединить ячейки и повторно вызвать команду клавишей F4 (повтор последнего действия).

Третий способ. Вначале поместите кнопку объединения ячеек на панель быстрого доступа. Для этого нажмите на треугольник справа от всех команд и там выберите Другие команды.

Настройка панели быстрого доступа Excel

Вы попадаете в настройки панели быстрого доступа. Найдите команду Объединить и поместить в центре и добавьте ее в правое окно.

Перенос кнопки на панель быстрого доступа

Кнопка появится на панели быстрого доступа.

Объединение ячеек на панели быстрого доступа

После нажатия Alt под этой кнопкой появится цифра, зависящая от порядкового номера в ряду.

Цифра под командой на панели быстрого доступа

Теперь есть еще одна горячая клавиша объединить ячейки в Excel – Alt + 5.

Выравнивание по центру (без объединения ячеек)

Для расположения надписи в середине строки воспользуйтесь командой выравнивание по центру.

  1. Поместите надпись в левую ячейку строки, где должно произойти выравнивание.
  2. Выделите вправо нужное количество ячеек.
  3. Вызываете команду Правая кнопка мыши → Формат ячеек → Выравнивание → по горизонтали → по центру выделения.

Внешне результат такой же, как при объединении, только все ячейки останутся на своем месте. Есть пару нюансов.

  1. Не всегда понятно, в какой ячейке находится запись.
  2. Выравнивать по центру можно только по горизонтали, по вертикали нельзя.

В большинстве случаев вместо объединения ячеек лучше применять выравнивание по центру.

Формат ячеек влияет только на отображение данных. На деле часто приходится соединять содержимое из разных ячеек. Далее рассмотрим, как в Excel объединить данные из нескольких ячеек в одну.

Объединение ячеек с помощью & (амперсанд) и функции Excel СЦЕПИТЬ (CONCATENATE)

Объединение содержимого ячеек – очень распространенная задача. Выбор решения зависит от типа данных и их количества.
Если нужно сцепить несколько ячеек, то подойдет оператор & (амперсанд).

& (амперсанд) для сцепки ячеек Excel

Обратите внимание, между ячейками добавлен разделитель в виде запятой с пробелом, то есть к объединению ячеек можно добавить произвольный текст. Полной аналогией & является применение функции СЦЕПИТЬ.

Функция СЦЕПИТЬ для объединения ячеек

В рассмотренных примерах были только ячейки с текстом. Может потребоваться соединять числа, даты или результаты расчетов. Если ничего специально не делать, то результат может отличаться от ожидания. Например, требуется объединить текст и число, округленное до 1 знака после запятой. Используем пока функцию СЦЕПИТЬ.

Функция СЦЕПИТЬ для текста

Число присоединилось полностью, как хранится в памяти программы. Чтобы задать нужный формат числу или дате после объединения, необходимо добавить функцию ТЕКСТ.

Правильное соединение текста и числа.

Объединение текста и числа в Excel функцией СЦЕПИТЬ

Соединение текста и даты.

Объединение текста и даты в Excel функцией СЦЕПИТЬ

В общем, если вы искали, как объединить столбцы в Excel, то эти приемы работают отлично. Однако у & и функции СЦЕПИТЬ есть существенный недостаток. Все части текста нужно указывать отдельным аргументом. Поэтому соединение большого числа ячеек становится проблемой.

Функция Excel СЦЕП (CONCAT)

В Excel 2016 на смену функции СЦЕПИТЬ пришла функция СЦЕП. Она работает так же, только в качестве аргумента можно задать целый диапазон.

Функция СЦЕП Excel

Все хорошо, но без пробелов. Если требуется соединить с разделителем, СЦЕП не сильно поможет. Поможет другая новая функция для объединения ячеек.

Функция Excel ОБЪЕДИНИТЬ (TEXTJOIN)

Функция ОБЪЕДИНИТЬ также появилась в Excel 2016 и решила сразу все проблемы склеивания ячеек: указание целого диапазона, вставка разделителя и даже пропуск пустых ячеек в диапазоне, чтобы не дублировать разделитель.

разделитель – разделитель, который вставляется между ячейками

пропускать_пустые – если 0, то пустые ячейки включаются, если 1 – игнорируются. Обычно задают 1, чтобы не дублировать разделитель.

текст1;… – ссылка на диапазон или отдельные ячейки для сцепления.

Функция ОБЪЕДИНИТЬ Excel

Функция Excel ОБЪЕДИНИТЬ – лучшее решение для склеивания ячеек.

Заполнить – Выровнять

И еще один трюк. Объединить ячейки можно без формул. Исходные ячейки должны быть в одном столбце.

Столбец с текстом для сцепления

Выполните следующие действия.

  1. Выделите столбец с данными.
  2. Расширьте выделение вправо настолько, сколько предположительно должен занять объединенный текст или больше.
  3. Вызовите команду Главная (вкладка) -> Редактирование (группа) -> Заполнить -> Выровнять.

Текст будет помещен в одну ячейку через пробел.

Выравнивание столбца с текстом по горизонтали

  • Если в ячейках есть числа, даты или формулы, фокус не получится. Работает только с текстом.
  • Общая длина текста не должна превышать 255 символов. Лишнее будет перенесено на вторую строку автоматически (см. ролик ниже).

Подведем итоги, как объединить ячейки, строки и столбцы в таблице Эксель. С помощью форматирования можно просто удалить границы между ячейками. Это плохое решение. Лучше воспользоваться выравниванием по центру. Объединение ячеек в Excel без потери данных производится специальными функциями.

Читайте также: