Excel interop объединение ячеек
Введение. Решение и выбор способа связывания
Введение алиаса позволяет не только сократить количество кода при обращении к объектам, но и дает возможность использовать весь код, который мы напишем ниже, для любого способа
Рис.1. Проект решения AppWordExcel
Создадим обработчик нажатия для кнопки 1 и замкнем на него обработчики нажатия всех кнопок. Запишем следующий, общий для всех примеров, приводимых ниже, код:
В case 1 будем размещать код, в котором выполняется какое-либо действие по старту Excel и выводу информации, в case 2 - дополнительные действия и действия при закрытии приложения, в default - поместим код выхода из приложения.
Немного обособленно от этой иерархической структуры объектов находится свойство Windows объекта Excel.Application, предназначенное для управления окнами сервера Excel. Свойство Windows содержит набор объектов Window, которые имеют, в свою очередь, набор свойств и методов для управления размерами, видом, масштабом и упорядочиванием открытых окон, отображением заголовков, цветами и т.д. Эти же возможности доступны и для свойств и методов объекта Excel.Application - ActiveWindow (ссылка на активное окно). (Подробно об управлении окнами см. в параграфе "Некоторые возможности по управлению параметрами Excel").
Все эти объекты принято определять глобально для того, чтобы обеспечить доступ к ним из любой функции проекта. Определим глобально основной объект Excel.Application и, сразу, хотя он и понадобится нам значительно позже - объект Excel.Window:
Следующий код позволяет выполнять запуск Excel и его закрытие при нажатии соответственно кнопок 1 и 2.
Параграф 2. Создание рабочих книг
Вторым в иерархии объектов Excel.Application является объект Workbook. Информация об объектах Workbook хранится в виде ссылок на открытые рабочие книги в свойстве Workbooks. Книга в приложение может быть добавлена только через добавление ссылки в совокупность Workbooks, а ссылка на открытую книгу может быть получена различным образом (по имени, номеру, как ссылка на активную книгу).
Рассмотрим создание двух рабочих книг из 3х и 5ти листов.
Свойство SheetsInNewWorkbook возвращает или устанавливает количество листов, автоматически помещаемых Excel в новые рабочие книги.
Из других свойств отметим свойство TemplatesPath. С его помощью, зная имя файла шаблона, можно напрямую задавать имя шаблона (правда, в этом нет необходимости, если мы не хотим использовать, например, свой собственный шаблон). Свойство StartupPath возвращает путь к папке, которая содержит надстройки, выполняемые при запуске Excel и, хотя свойство для отображения информации нам ничего не дает, все же порой бывает необходимо найти имя файла настроек и удалить его для того, чтобы приложение работало только с собственными настройками.
Книги могут быть не только добавлены, но и закрыты. Следующие вызовы закрывают все или конкретную рабочую книгу:
Остановимся более подробно на втором методе. Его параметры:
Параграф 3. Сохранение документов
3.1. Подготовка к сохранению документов
Документы Excel можно сохранить программно и обычным для Excel способом. В любом случае перед выходом из Excel необходимо вызвать метод Quit. Если свойство Excel.Application DisplayAlerts имеет значение true, Excel предложит сохранить несохраненные данные, если после старта в документ были внесены какие либо изменения. Excel автоматически не возвращает это свойство в значение по умолчанию, поэтому его рекомендуется возвращать в исходное состояние.
Добавим в область глобального определения переменных еще две строчки, определив массив ссылок на созданные книги и на объект - конкретную книгу.
Теперь, если выйти на конкретную книгу, как показано в примере, приведенном ниже, и присвоить свойству Saved объекта Workbook значение true, Excel согласно документации не должен предлагать сохранение независимо от того, были или нет изменения в данной книге (к сожалению, это не всегда работает).
На некоторых вариациях версий Windows и Office запрос на сохранение может все равно присутствовать, хотя мы, и отключаем его в свойстве Saved.
Из примера видно, что кроме Item, у набора Workbooks, как и у всех наборов в Microsoft Office, есть свойство Count, которое возвращает число элементов в наборе (в данном случае - объектов Workbook).
Следующий вопрос, - в каком формате сохранять документ. Для получения формата открываемого документа и задания формата сохраняемого служит свойство Excel.Application DefaultSaveFormat. Свойство имеет много значений типа XlFileFormat (какие могут быть легко посмотреть в диалоговом окне "Сохранение документа" в поле "Тип файла", открыв Excel и выбрав пункт меню "Файл" | "Сохранить как").
Например, в case 1 допишем строчку:
и в окне диалога сохранения файла будет установлен тип файла "Web страница".
3.2. Сохранение документа
Для сохранения документов можно использовать методы Excel.Workbook Save и SaveAs. Метод Save сохраняет рабочую книгу в папке "Мои документы" с именами, присваиваемыми документу по умолчанию ("Книга1.xls", "Книга2.xls" . ) или в директорию и с именем под которым документ уже был сохранен.
Изменим код в case 2, на следующий и продемонстрируем пример сохранения по умолчанию:
При значении свойства DisplayAlerts=true Excel будет спрашивать - записать ли сохраняемый документ поверх существующего, при значении false - нет.
Метод SaveAs позволяет сохранить документ с указанием имени, формата файла, пароля, режим доступа и т. д. Данный метод, как и метод Save, присваивает свойству Saved значение true. Метод SaveAs имеет следующий синтаксис:
Для доступа к книге используются значение AccessMode xlShared - общая рабочая книга, xlExclusive - монопольный доступ или xlNoChange - запрет изменения режима доступа.
Параметр ConflictResolution - способ разрешения конфликтов при одновременном внесении несколькими пользователями изменений в один документ - может иметь значения: xlUserResolution - отображение диалогового окна разрешения конфликтов (параметр по умолчанию), xlLocalSessionChanges - принятие изменений, внесенных пользователем или xlOtherSessionChanges - принятие изменений, внесенных другими пользователями.
Следующий пример сохраняет открытые выше документы в формате .html и .xls, причем большинство параметров для первого документа передаются как не имеющие значения Type.Missing, для второго документа использовано паролирование и запрет изменения режима доступа (Excel.XlSaveAsAccessMode.xlNoChange):
Рис.2. Вызов документа с установленным паролем на доступ и запись
Для сохранения документа может быть использован метод SaveCopyAs, который сохраняет копию рабочей книги в файле. Следующий пример, использующий метод SaveCopyAs полностью аналогичен примеру, использующему метод SaveAs при задании всех параметров как Type.Missing.
Метод SaveAs не производит преобразование документа и, поэтому, приведенный код вместо Web страницы a.html сохранит копию xls документа (изменит только расширение).
Параграф 4. Открытие существующего документа
Для открытия существующего документа основным методом является метод Open набора Excel.Workbooks. Для открытия текстовых файлов как рабочих книг, баз данных, файлов в формате .XML, используются методы OpenText, OpenDatabase или OpenXml. Об использовании методов OpenDatabase и OpenXml речь будет вестись в других темах. В данном параграфе рассмотрим метод Open.
После выполнения предыдущего примера у нас осталось два рабочих файла a.html и a.xls, которые мы и откроем как две рабочие книги в Excel, изменив код в case 1:
Метод Open имеет много параметров. Но, большинство из них, как видно из примера, необязательны. Рассмотрим параметры метода Open:
UpdateLinks - позволяет задать способ обновления ссылок в файле. Если данный параметр не задан, то выдается запрос на указание метода обновления. Значения: 0 - не обновлять ссылки; 1 - обновлять внешние ссылки; 2 - обновлять только удаленные ссылки; 3 - обновлять все ссылки.
Format - при работе с текстовыми файлами определяет символ разделителя для полей, заносимых в различные ячейки документа. Значения параметра: 1 - символ табуляции; 2 - запятая; 3 - пробел; 4 - точка с запятой; 5 - нет разделителя; 6 - другой символ, определенный в параметре Delimiter.
Приведем еще один пример - пример открытия текстового файла с использованием метода OpenText. Метод загружает в Excel текстовый файл как рабочую книгу с одиночным листом и производит его парсинг по ячейкам листа в соответствии с параметрами.
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Представляет ячейку, строку, столбец или группу ячеек, содержащую один или несколько смежных блоков ячеек или объемный диапазон.
Свойства
Зарезервировано для внутреннего использования.
Определяет, если текст автоматически отступил, когда выравнивание текста в ячейке настроено на равное распределение по горизонтали или по вертикали.
Возвращает ссылку диапазона.
Возвращает ссылку диапазона для указанного диапазона на языке пользователя.
Определяет, можно ли изменить диапазон на защищенной таблице.
Возвращает Application объект, который представляет Microsoft Excel приложение.
Возвращает Areas коллекцию, представляюную все диапазоны в выборке с несколькими зонами.
Возвращает коллекцию, представляюную границы стиля или диапазона ячеек (включая диапазон, определенный как часть Borders условного формата).
Возвращает объект Range, представляющий ячейки в указанном диапазоне.
Возвращает объект, который представляет диапазон символов Characters в тексте объекта.
Возвращает число первого столбца в первом области в указанном диапазоне.
Возвращает Range объект, который представляет столбцы в указанном диапазоне.
Возвращает или задает ширину всех столбцов в указанном диапазоне.
Возвращает объект, который представляет комментарий, связанный с ячейкой в верхнем Comment левом углу диапазона.
Возвращает количество объектов в коллекции.
Подсчитывают наибольшее значение в заданной диапазоне значений. Только для чтения.
Возвращает 32-битное целое число, указывающее на приложение, в котором объект был создан.
Если указанная ячейка является частью массива, возвращает объект, который Range представляет весь массив.
Возвращает Range объект, который представляет текущий регион.
Возвращает Range объект, представляющего диапазон, содержащий все иждивенцы ячейки.
Возвращает Range объект, представляющего диапазон, содержащий все прямые иждивенцы ячейки.
Возвращает Range объект, представляющего диапазон, содержащий все прямые прецеденты ячейки.
Получает DisplayFormat объект, который представляет параметры отображения для указанного диапазона.
Возвращает объект, представляю который представляет ячейку в конце области, которая Range содержит исходный диапазон.
Возвращает Range объект, который представляет весь столбец (или столбцы), содержащий указанный диапазон.
Возвращает Range объект, который представляет всю строку (или строки), содержащий указанный диапазон.
Позволяет пользователю получить доступ к вариантам проверки ошибок.
Возвращает Font объект, который представляет шрифт указанного объекта.
Возвращает FormatConditions коллекцию, представляюную все условные форматы для указанного диапазона.
Возвращает или задает формулу объекта в нотации в стиле A1 и на языке макроса.
Возвращает или задает формулу массива диапазона.
Определяет, будет ли формула скрыта при защите таблицы.
Возвращает или задает тип метки формулы для указанного диапазона.
Возвращает или задает формулу для объекта, используя ссылки В1-стиле на языке пользователя.
Возвращает или задает формулу для объекта с использованием нотации в стиле R1C1 на языке макроса.
Возвращает или задает формулу для объекта с помощью нотации в стиле R1C1 на языке пользователя.
Определяет, является ли указанная ячейка частью формулы массива.
Определяет, содержат ли все ячейки в диапазоне формулы.
Определяет, скрыты ли строки или столбцы.
Возвращает или задает горизонтальное выравнивание для указанного объекта.
Возвращает Hyperlinks коллекцию, представляюную гиперссылки для диапазона.
Возвращает или задает метку идентификации для указанной ячейки, когда страница сохранена в качестве веб-страницы.
Возвращает или задает отступной уровень для ячейки или диапазона.
Возвращает Interior объект, который представляет интерьер указанного объекта.
Возвращает объект Range с диапазоном смещения в указанный диапазон.
Расстояние от левого края столбца A до левого края диапазона.
Возвращает количество строк загона для указанного диапазона.
Возвращает объект ListObject для Range объекта или QueryTable объекта.
Возвращает констант, описываемую часть отчета, которая содержит верхний левый угол PivotTable указанного диапазона.
Определяет, заблокирован ли объект.
Возвращает имя MDX для указанного Range объекта. Только для чтения.
Возвращает Range объект, представляющего объединенный диапазон, содержащий указанную ячейку.
Определяет, содержит ли диапазон или стиль объединенные ячейки.
Возвращает или задает имя объекта.
Возвращает Range объект, который представляет следующую ячейку.
Возвращает или задает код формата для объекта.
Возвращает или задает код формата для объекта в виде строки на языке пользователя.
Возвращает объект, который представляет диапазон, смещенный Range из указанного диапазона.
Возвращает текстовую ориентацию.
Возвращает или задает текущий уровень контура указанной строки или столбца.
Возвращает или задает расположение разрыва страницы.
Возвращает родительский объект для указанного объекта.
Возвращает объект, содержащий сведения о определенной фонетической строке текста Phonetic в ячейке.
Возвращает Phonetics коллекцию диапазона.
Возвращает PivotCell объект, который представляет ячейку в отчете PivotTable.
Возвращает PivotField объект, представляющее поле PivotTable, содержащее верхний левый угол указанного диапазона.
Возвращает PivotItem объект, представляющего элемент PivotTable, содержащий верхний левый угол указанного диапазона.
Возвращает объект, представляющего отчет PivotTable, содержащий верхний левый угол указанного диапазона, или отчет PivotTable, связанный с отчетом PivotTable сводная диаграмма.
Возвращает Range объект, который представляет все прецеденты ячейки.
Возвращает символ префикса для ячейки.
Возвращает Range объект, который представляет предыдущую ячейку.
Возвращает QueryTable объект, представляюющий таблицу запросов, которая пересекается с указанным Range объектом.
Возвращает Range объект, который представляет ячейку или диапазон ячеек.
Возвращает или задает порядок чтения указанного объекта.
Resizes the specified range.
Возвращает номер первого ряда первой области в диапазоне.
Возвращает высоту всех строк в указанном диапазоне, измеряемом в точках.
Возвращает Range объект, который представляет строки в указанном диапазоне.
Указывает действия, которые можно выполнить на SharePoint для Range объекта.
Возвращает True, если контур расширен для указанного диапазона (чтобы была видна деталь столбца или строки).
Определяет, сжимается ли текст автоматически, чтобы соответствовать доступной ширине столбца.
Возвращает SmartTags объект, представляющий идентификатор указанной ячейки.
Это свойство не следует использовать. Звуковые заметки были удалены из Microsoft Excel.
Получает SparklineGroups объект, который представляет существующую группу sparklines из указанного диапазона.
Возвращает Style объект, который представляет стиль указанного диапазона.
Определяет, является ли диапазон строкой или столбцом сводной строки.
Возвращает или задает текст для указанного объекта.
Возвращает расстояние в точках от верхнего края строки 1 до верхнего края диапазона.
Определяет, равна ли высота строки объекта Range стандартной высоте листа.
Определяет, равна ли ширина столбца объекту Range стандартную ширину листа.
Возвращает Validation объект, который представляет проверку данных для указанного диапазона.
Возвращает или задает значение указанного диапазона.
Возвращает или задает значение ячейки.
Возвращает или задает вертикальное выравнивание указанного объекта.
Ширина диапазона в точках.
Возвращает Worksheet объект, представляющего таблицу, содержащую указанный диапазон.
Определяет, Microsoft Excel обертывание текста в объекте.
Возвращает XPath объект, который представляет Xpath элемента, отражаемого в указанном Range объекте.
Методы
Зарезервировано для внутреннего использования.
Зарезервировано для внутреннего использования.
Активирует одну ячейку, которая должна быть внутри текущего выбора.
Добавляет комментарий в диапазон.
Фильтрует или копирует данные из списка на основе диапазона критериев.
Выполняет операцию списания для всех отредактированых ячеек в диапазоне на основе источника данных OLAP.
Применяет имена к ячейкам в указанном диапазоне.
Применяет в указанном диапазоне стили с изягом.
Возвращает совпадение автокомплетов из списка.
Выполняет автозаполнеть ячейки в указанном диапазоне.
Фильтрует список с помощью автофильтра.
Изменяет ширину столбцов в диапазоне или высоту строк в диапазоне, чтобы достичь наилучшей посадки.
Автоматически форматируется указанный диапазон, используя заданный формат.
Автоматически создается контур для указанного диапазона.
Добавляет границу в диапазон и задает Color свойства и свойства для новой LineStyle Weight границы.
Зарезервировано для внутреннего использования.
Вычисляет определенный диапазон ячеек на таблице.
Вычисляет спектр ячеек.
Проверяет орфографию объекта.
Очищает весь объект.
Очищает все комментарии ячейки из указанного диапазона.
Очищает формулы из диапазона.
Очищает форматирование объекта.
Удаляет все гиперссылки из указанного диапазона.
Очищает заметки и звуковые заметки из всех ячеек указанного диапазона.
Очищает контур для указанного диапазона.
Возвращает объект, который представляет все ячейки, содержимое которых отличается от ячейки Range сравнения в каждом столбце.
Консолидирует данные из нескольких диапазонов на нескольких таблицах в один диапазон на одном.
Копирует диапазон в указанный диапазон или в буфер обмена.
Копирует содержимое объекта ADO или DAO Recordset на таблицу, начиная с верхнего левого угла указанного диапазона.
Копирует выбранный объект в буфер обмена в качестве изображения.
Создает имена в указанном диапазоне на основе текстовых меток на листе.
Вы запросили справку по ключевому слову, используемом только в Macintosh. Сведения об этом ключевом слове можно получить в справочной справке по языку, включенной в Microsoft Office Macintosh Edition.
Отрезает объект в буфер обмена или вклеит его в заданный пункт назначения.
Создает серию данных в указанном диапазоне.
Отображает диалоговое окно, определенное таблицей определения диалоговых полей на Microsoft Excel 4.0 макроса.
Назначает диапазон, который будет пересчитываться при следующем пересчете.
Удаляет все изменения в измененных ячейках диапазона.
Вы запросили справку по ключевому слову, используемом только в Macintosh. Сведения об этом ключевом слове можно получить в справочной справке по языку, включенной в Microsoft Office Macintosh Edition.
Экспорт в файл указанного формата.
Заполняется из верхней ячейки или ячейки в указанном диапазоне в нижней части диапазона.
Заполняет слева от правой ячейки или ячейки в указанном диапазоне.
Заполняет справа от левой ячейки или ячеек в указанном диапазоне.
Заполняется из нижней ячейки или ячейки в указанном диапазоне в верхнюю часть диапазона.
Находит определенную информацию в диапазоне и возвращает объект, Range который представляет первую ячейку, в которой находятся эти сведения.
TRUE указывает, что функция Excel flash Fill включена и активна.
Запускает мастер функции для верхнего левого элемента диапазона.
Вычисляет значения, необходимые для достижения определенной цели.
Если объект представляет одну ячейку в диапазоне данных поля Range PivotTable, метод Group выполняет числовую или датированную группировку в этом поле.
Вставляет ячейку или диапазон ячеек в лист листа или макроса и перемещает другие ячейки, чтобы сделать пространство.
Добавляет отступ к указанному диапазону.
Переостановка текста в диапазоне так, чтобы он заполнял диапазон 1000 000 000 000 000 000 000 000 000 00
Вклеить список всех отображаемого имен на лист, начиная с первой ячейки в диапазоне.
Создает объединенную ячейку из указанного Range объекта.
Перемещает стрелку трассировки для указанного диапазона в прецедентную, зависимую или вызываемую ошибкой ячейку или ячейки.
Возвращает или задает заметку ячейки, связанную с ячейкой в верхнем левом углу диапазона.
Анализирует диапазон данных и разбивает их на несколько ячеек.
Вклеить Range a из буфера обмена в указанный диапазон.
Зарезервировано для внутреннего использования.
Показывает предварительный просмотр объекта, как он будет выглядеть при печати.
Удаляет дублирующиеся значения из ряда значений.
Удаляет подтталы из списка.
Возвращает символы Boolean, указывающие в ячейках в указанном диапазоне.
Возвращает объект, который представляет все ячейки, содержимое которых отличается от содержимого ячейки Range сравнения в каждой строке.
Выполняет макрос Microsoft Excel в этом расположении.
Создает Phonetic объекты для всех ячеек в указанном диапазоне.
Прокрутит содержимое активного окна, чтобы переместить диапазон в представление.
Рисует стрелки трассировки к прямым иждивенцам диапазона.
Рисует стрелки трассировки через дерево прецедентов в ячейку, которая является источником ошибки, и возвращает диапазон, содержащий эту ячейку.
Рисует стрелки трассировки к прямым прецедентам диапазона.
Сортировать отчет PivotTable, диапазон или активную область, если указанный диапазон содержит только одну ячейку.
Использует восточноазиатские методы сортировки для сортировки диапазона или отчета PivotTable или использует метод для активного региона, если диапазон содержит только одну ячейку. Например, японские сорта в порядке слога Каны.
Вызывает разговор ячеек диапазона в порядке строки или в порядке столбца.
Возвращает объект, который представляет все ячейки, которые Range соответствуют указанному типу и значению.
Вы запросили справку по ключевому слову, используемом только в Macintosh. Сведения об этом ключевом слове можно получить в справочной справке по языку, включенной в Microsoft Office Macintosh Edition.
Создает subtotals для диапазона (или текущего региона, если диапазон является одной ячейкой).
Создает таблицу данных на основе значений ввода и формул, которые определяются на таблице.
Настоящая документация является предварительной и может быть изменена. В этом разделе показано, как использовать классы в Пакет 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 часто применяют эту команду для размещения названия таблицы по центру.
Выглядит красиво, но крайне непрактично. Если выделить столбец комбинацией клавиш Ctrl + пробел, то диапазон расширится на все столбцы, которые захватывает объединенная ячейка. Возникнут и другие проблемы: при копировании, не работает в таблице Excel, нельзя автоматически подогнать ширину столбца и др. В общем, объединение ячеек сулит много неудобств в дальнейшей работе. Поэтому в большинстве случаев объединение ячеек лучше не применять.
Как найти объединенные ячейки в Excel
Бывает, что в файле уже есть объединенные ячейки и они мешают нормальной работе. Например, в отчете из 1С или при работе с чужим файлом Excel. Тогда их нужно как-то быстро найти и отменить объединение. Как это быстро сделать? Выполните следующие шаги.
Как убрать объединение ячеек в Excel
Для отмены объединения сразу на всем листе Excel выполните следующие действия.
- Выделите все ячейки на листе. Можно щелкнуть на треугольнике, расположенном на пересечении заголовков строк и столбцов, либо горячей комбинацией Ctrl + A (один или два раза).
- Повторно примените команду Главная (вкладка) → Выравнивание (группа) → Объединить и поместить в центре.
Все объединенные ячейки снова станут нормальными. Если что-то пойдет не так, отмените последнее действие.
Горячие клавиши объединения ячеек в Excel
К сожалению, в Excel нет стандартных горячих клавиш для объединения ячеек. Тем не менее, у каждой команды есть свой клавиатурный эквивалент и его можно узнать. Для этого следует нажать клавишу Alt, на ленте под каждой вкладкой появится буква, нажав на которую, вы переходите внутрь этой вкладки.
Затем буквы появятся под каждой командой или выпадающим списком команд. Таким образом можно определить последовательность клавиш вызова нужной команды. Для объединения и центрирования ячеек в моей версии Excel необходимо последовательно нажать Alt – Я – Щ – Б. Это был первый способ.
Второй способ. Любым способом объединить ячейки и повторно вызвать команду клавишей F4 (повтор последнего действия).
Третий способ. Вначале поместите кнопку объединения ячеек на панель быстрого доступа. Для этого нажмите на треугольник справа от всех команд и там выберите Другие команды.
Вы попадаете в настройки панели быстрого доступа. Найдите команду Объединить и поместить в центре и добавьте ее в правое окно.
Кнопка появится на панели быстрого доступа.
После нажатия Alt под этой кнопкой появится цифра, зависящая от порядкового номера в ряду.
Теперь есть еще одна горячая клавиша объединить ячейки в Excel – Alt + 5.
Выравнивание по центру (без объединения ячеек)
Для расположения надписи в середине строки воспользуйтесь командой выравнивание по центру.
- Поместите надпись в левую ячейку строки, где должно произойти выравнивание.
- Выделите вправо нужное количество ячеек.
- Вызываете команду Правая кнопка мыши → Формат ячеек → Выравнивание → по горизонтали → по центру выделения.
Внешне результат такой же, как при объединении, только все ячейки останутся на своем месте. Есть пару нюансов.
- Не всегда понятно, в какой ячейке находится запись.
- Выравнивать по центру можно только по горизонтали, по вертикали нельзя.
В большинстве случаев вместо объединения ячеек лучше применять выравнивание по центру.
Формат ячеек влияет только на отображение данных. На деле часто приходится соединять содержимое из разных ячеек. Далее рассмотрим, как в Excel объединить данные из нескольких ячеек в одну.
Объединение ячеек с помощью & (амперсанд) и функции Excel СЦЕПИТЬ (CONCATENATE)
Объединение содержимого ячеек – очень распространенная задача. Выбор решения зависит от типа данных и их количества.
Если нужно сцепить несколько ячеек, то подойдет оператор & (амперсанд).
Обратите внимание, между ячейками добавлен разделитель в виде запятой с пробелом, то есть к объединению ячеек можно добавить произвольный текст. Полной аналогией & является применение функции СЦЕПИТЬ.
В рассмотренных примерах были только ячейки с текстом. Может потребоваться соединять числа, даты или результаты расчетов. Если ничего специально не делать, то результат может отличаться от ожидания. Например, требуется объединить текст и число, округленное до 1 знака после запятой. Используем пока функцию СЦЕПИТЬ.
Число присоединилось полностью, как хранится в памяти программы. Чтобы задать нужный формат числу или дате после объединения, необходимо добавить функцию ТЕКСТ.
Правильное соединение текста и числа.
Соединение текста и даты.
В общем, если вы искали, как объединить столбцы в Excel, то эти приемы работают отлично. Однако у & и функции СЦЕПИТЬ есть существенный недостаток. Все части текста нужно указывать отдельным аргументом. Поэтому соединение большого числа ячеек становится проблемой.
Функция Excel СЦЕП (CONCAT)
В Excel 2016 на смену функции СЦЕПИТЬ пришла функция СЦЕП. Она работает так же, только в качестве аргумента можно задать целый диапазон.
Все хорошо, но без пробелов. Если требуется соединить с разделителем, СЦЕП не сильно поможет. Поможет другая новая функция для объединения ячеек.
Функция Excel ОБЪЕДИНИТЬ (TEXTJOIN)
Функция ОБЪЕДИНИТЬ также появилась в Excel 2016 и решила сразу все проблемы склеивания ячеек: указание целого диапазона, вставка разделителя и даже пропуск пустых ячеек в диапазоне, чтобы не дублировать разделитель.
разделитель – разделитель, который вставляется между ячейками
пропускать_пустые – если 0, то пустые ячейки включаются, если 1 – игнорируются. Обычно задают 1, чтобы не дублировать разделитель.
текст1;… – ссылка на диапазон или отдельные ячейки для сцепления.
Функция Excel ОБЪЕДИНИТЬ – лучшее решение для склеивания ячеек.
Заполнить – Выровнять
И еще один трюк. Объединить ячейки можно без формул. Исходные ячейки должны быть в одном столбце.
Выполните следующие действия.
- Выделите столбец с данными.
- Расширьте выделение вправо настолько, сколько предположительно должен занять объединенный текст или больше.
- Вызовите команду Главная (вкладка) -> Редактирование (группа) -> Заполнить -> Выровнять.
Текст будет помещен в одну ячейку через пробел.
- Если в ячейках есть числа, даты или формулы, фокус не получится. Работает только с текстом.
- Общая длина текста не должна превышать 255 символов. Лишнее будет перенесено на вторую строку автоматически (см. ролик ниже).
Подведем итоги, как объединить ячейки, строки и столбцы в таблице Эксель. С помощью форматирования можно просто удалить границы между ячейками. Это плохое решение. Лучше воспользоваться выравниванием по центру. Объединение ячеек в Excel без потери данных производится специальными функциями.
Объединение ячеек – известная команда в Excel. Однако на выполнение этой операции часто уходит много времени. В данной статье рассмотрим, что подразумевают под объединением ячеек, и как быстро выполнить эту операцию. Выбрав оптимальный варианты, вы сэкономите много времени.
Формат ячеек
Команда Excel Правая кнопка мыши → Формат ячеек → Выравнивание → Отображение → объединение ячеек удаляет границы между ячейками в выделенном диапазоне. В результате получается одна большая ячейка. На картинке показано объединение ячеек одной строки и трех столбцов.
Таким же способом можно объединить любой прямоугольной диапазон. После объединения ячеек содержимое часто центрируют. На ленте во вкладке Главная даже есть специальная команда Объединить и поместить в центре.
Начинающие пользователи Excel часто применяют эту команду для размещения названия таблицы по центру.
Выглядит красиво, но крайне непрактично. Если выделить столбец комбинацией клавиш Ctrl + пробел, то диапазон расширится на все столбцы, которые захватывает объединенная ячейка. Возникнут и другие проблемы: при копировании, не работает в таблице Excel, нельзя автоматически подогнать ширину столбца и др. В общем, объединение ячеек сулит много неудобств в дальнейшей работе. Поэтому в большинстве случаев объединение ячеек лучше не применять.
Как найти объединенные ячейки в Excel
Бывает, что в файле уже есть объединенные ячейки и они мешают нормальной работе. Например, в отчете из 1С или при работе с чужим файлом Excel. Тогда их нужно как-то быстро найти и отменить объединение. Как это быстро сделать? Выполните следующие шаги.
Как убрать объединение ячеек в Excel
Для отмены объединения сразу на всем листе Excel выполните следующие действия.
- Выделите все ячейки на листе. Можно щелкнуть на треугольнике, расположенном на пересечении заголовков строк и столбцов, либо горячей комбинацией Ctrl + A (один или два раза).
- Повторно примените команду Главная (вкладка) → Выравнивание (группа) → Объединить и поместить в центре.
Все объединенные ячейки снова станут нормальными. Если что-то пойдет не так, отмените последнее действие.
Горячие клавиши объединения ячеек в Excel
К сожалению, в Excel нет стандартных горячих клавиш для объединения ячеек. Тем не менее, у каждой команды есть свой клавиатурный эквивалент и его можно узнать. Для этого следует нажать клавишу Alt, на ленте под каждой вкладкой появится буква, нажав на которую, вы переходите внутрь этой вкладки.
Затем буквы появятся под каждой командой или выпадающим списком команд. Таким образом можно определить последовательность клавиш вызова нужной команды. Для объединения и центрирования ячеек в моей версии Excel необходимо последовательно нажать Alt – Я – Щ – Б. Это был первый способ.
Второй способ. Любым способом объединить ячейки и повторно вызвать команду клавишей F4 (повтор последнего действия).
Третий способ. Вначале поместите кнопку объединения ячеек на панель быстрого доступа. Для этого нажмите на треугольник справа от всех команд и там выберите Другие команды.
Вы попадаете в настройки панели быстрого доступа. Найдите команду Объединить и поместить в центре и добавьте ее в правое окно.
Кнопка появится на панели быстрого доступа.
После нажатия Alt под этой кнопкой появится цифра, зависящая от порядкового номера в ряду.
Теперь есть еще одна горячая клавиша объединить ячейки в Excel – Alt + 5.
Выравнивание по центру (без объединения ячеек)
Для расположения надписи в середине строки воспользуйтесь командой выравнивание по центру.
- Поместите надпись в левую ячейку строки, где должно произойти выравнивание.
- Выделите вправо нужное количество ячеек.
- Вызываете команду Правая кнопка мыши → Формат ячеек → Выравнивание → по горизонтали → по центру выделения.
Внешне результат такой же, как при объединении, только все ячейки останутся на своем месте. Есть пару нюансов.
- Не всегда понятно, в какой ячейке находится запись.
- Выравнивать по центру можно только по горизонтали, по вертикали нельзя.
В большинстве случаев вместо объединения ячеек лучше применять выравнивание по центру.
Формат ячеек влияет только на отображение данных. На деле часто приходится соединять содержимое из разных ячеек. Далее рассмотрим, как в Excel объединить данные из нескольких ячеек в одну.
Объединение ячеек с помощью & (амперсанд) и функции Excel СЦЕПИТЬ (CONCATENATE)
Объединение содержимого ячеек – очень распространенная задача. Выбор решения зависит от типа данных и их количества.
Если нужно сцепить несколько ячеек, то подойдет оператор & (амперсанд).
Обратите внимание, между ячейками добавлен разделитель в виде запятой с пробелом, то есть к объединению ячеек можно добавить произвольный текст. Полной аналогией & является применение функции СЦЕПИТЬ.
В рассмотренных примерах были только ячейки с текстом. Может потребоваться соединять числа, даты или результаты расчетов. Если ничего специально не делать, то результат может отличаться от ожидания. Например, требуется объединить текст и число, округленное до 1 знака после запятой. Используем пока функцию СЦЕПИТЬ.
Число присоединилось полностью, как хранится в памяти программы. Чтобы задать нужный формат числу или дате после объединения, необходимо добавить функцию ТЕКСТ.
Правильное соединение текста и числа.
Соединение текста и даты.
В общем, если вы искали, как объединить столбцы в Excel, то эти приемы работают отлично. Однако у & и функции СЦЕПИТЬ есть существенный недостаток. Все части текста нужно указывать отдельным аргументом. Поэтому соединение большого числа ячеек становится проблемой.
Функция Excel СЦЕП (CONCAT)
В Excel 2016 на смену функции СЦЕПИТЬ пришла функция СЦЕП. Она работает так же, только в качестве аргумента можно задать целый диапазон.
Все хорошо, но без пробелов. Если требуется соединить с разделителем, СЦЕП не сильно поможет. Поможет другая новая функция для объединения ячеек.
Функция Excel ОБЪЕДИНИТЬ (TEXTJOIN)
Функция ОБЪЕДИНИТЬ также появилась в Excel 2016 и решила сразу все проблемы склеивания ячеек: указание целого диапазона, вставка разделителя и даже пропуск пустых ячеек в диапазоне, чтобы не дублировать разделитель.
разделитель – разделитель, который вставляется между ячейками
пропускать_пустые – если 0, то пустые ячейки включаются, если 1 – игнорируются. Обычно задают 1, чтобы не дублировать разделитель.
текст1;… – ссылка на диапазон или отдельные ячейки для сцепления.
Функция Excel ОБЪЕДИНИТЬ – лучшее решение для склеивания ячеек.
Заполнить – Выровнять
И еще один трюк. Объединить ячейки можно без формул. Исходные ячейки должны быть в одном столбце.
Выполните следующие действия.
- Выделите столбец с данными.
- Расширьте выделение вправо настолько, сколько предположительно должен занять объединенный текст или больше.
- Вызовите команду Главная (вкладка) -> Редактирование (группа) -> Заполнить -> Выровнять.
Текст будет помещен в одну ячейку через пробел.
- Если в ячейках есть числа, даты или формулы, фокус не получится. Работает только с текстом.
- Общая длина текста не должна превышать 255 символов. Лишнее будет перенесено на вторую строку автоматически (см. ролик ниже).
Подведем итоги, как объединить ячейки, строки и столбцы в таблице Эксель. С помощью форматирования можно просто удалить границы между ячейками. Это плохое решение. Лучше воспользоваться выравниванием по центру. Объединение ячеек в Excel без потери данных производится специальными функциями.
Читайте также: