Управление строками и столбцами в таблицах PowerPoint с помощью PHP

Чтобы дать возможность управлять строками и столбцами таблицы в презентации PowerPoint, Aspose.Slides предоставляет класс Table и множество других типов.

Установить первую строку как заголовок

  1. Создайте экземпляр класса Presentation и загрузите презентацию.
  2. Получите ссылку на слайд по его индексу.
  3. Создайте объект Table и присвойте ему значение null.
  4. Переберите все объекты Shape в поиске нужной таблицы.
  5. Установите первую строку таблицы в качестве заголовка.

Этот PHP‑код демонстрирует, как установить первую строку таблицы в качестве заголовка:

  # Создаёт экземпляр класса Presentation
  $pres = new Presentation("table.pptx");
  try {
    # Получает первый слайд
    $sld = $pres->getSlides()->get_Item(0);
    # Инициализирует null TableEx
    $tbl = null;
    # Перебирает фигуры и задаёт ссылку на таблицу
    foreach($sld->getShapes() as $shp) {
      if (java_instanceof($shp, new JavaClass("com.aspose.slides.Table"))) {
        $tbl = $shp;
        # Устанавливает первую строку таблицы как заголовок
        $tbl->setFirstRow(true);
      }
    }
    # Сохраняет презентацию на диск
    $pres->save("pres.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

Клонировать строку или столбец таблицы

  1. Создайте экземпляр класса Presentation и загрузите презентацию,
  2. Получите ссылку на слайд по его индексу.
  3. Определите массив columnWidth.
  4. Определите массив rowHeight.
  5. Добавьте объект Table на слайд с помощью метода addTable.
  6. Клонируйте строку таблицы.
  7. Клонируйте столбец таблицы.
  8. Сохраните изменённую презентацию.

Этот PHP‑код демонстрирует, как клонировать строку или столбец таблицы PowerPoint:

  # Создаёт экземпляр класса Presentation
  $pres = new Presentation("Test.pptx");
  try {
    # Получает первый слайд
    $sld = $pres->getSlides()->get_Item(0);
    # Определяет столбцы с ширинами и строки с высотами
    $dblCols = array(50, 50, 50 );
    $dblRows = array(50, 30, 30, 30, 30 );
    # Добавляет форму таблицы на слайд
    $table = $sld->getShapes()->addTable(100, 50, $dblCols, $dblRows);
    # Добавляет текст в ячейку строки 1, столбца 1
    $table->get_Item(0, 0)->getTextFrame()->setText("Row 1 Cell 1");
    # Добавляет текст в ячейку строки 1, столбца 2
    $table->get_Item(1, 0)->getTextFrame()->setText("Row 1 Cell 2");
    # Клонирует строку 1 в конец таблицы
    $table->getRows()->addClone($table->getRows()->get_Item(0), false);
    # Добавляет текст в ячейку строки 2, столбца 1
    $table->get_Item(0, 1)->getTextFrame()->setText("Row 2 Cell 1");
    # Добавляет текст в ячейку строки 2, столбца 2
    $table->get_Item(1, 1)->getTextFrame()->setText("Row 2 Cell 2");
    # Клонирует строку 2 как 4‑ю строку таблицы
    $table->getRows()->insertClone(3, $table->getRows()->get_Item(1), false);
    # Клонирует первый столбец в конец
    $table->getColumns()->addClone($table->getColumns()->get_Item(0), false);
    # Клонирует второй столбец на позицию 4‑го столбца
    $table->getColumns()->insertClone(3, $table->getColumns()->get_Item(1), false);
    # Сохраняет презентацию на диск
    $pres->save("table_out.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

Удалить строку или столбец из таблицы

  1. Создайте экземпляр класса Presentation и загрузите презентацию,
  2. Получите ссылку на слайд по его индексу.
  3. Определите массив columnWidth.
  4. Определите массив rowHeight.
  5. Добавьте объект Table на слайд с помощью метода addTable.
  6. Удалите строку таблицы.
  7. Удалите столбец таблицы.
  8. Сохраните изменённую презентацию.

Этот PHP‑код демонстрирует, как удалить строку или столбец из таблицы:

  $pres = new Presentation();
  try {
    $slide = $pres->getSlides()->get_Item(0);
    $colWidth = array(100, 50, 30 );
    $rowHeight = array(30, 50, 30 );
    $table = $slide->getShapes()->addTable(100, 100, $colWidth, $rowHeight);
    $table->getRows()->removeAt(1, false);
    $table->getColumns()->removeAt(1, false);
    $pres->save("TestTable_out.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

Установить форматирование текста на уровне строк таблицы

  1. Создайте экземпляр класса Presentation и загрузите презентацию,
  2. Получите ссылку на слайд по его индексу.
  3. Получите нужный объект Table со слайда.
  4. Установите для ячеек первой строки метод setFontHeight(float value).
  5. Установите для ячеек первой строки методы setAlignment(int value) и setMarginRight(float value).
  6. Установите для ячеек второй строки метод setTextVerticalType(byte value).
  7. Сохраните изменённую презентацию.

Этот PHP‑код демонстрирует операцию.

  # Создаёт экземпляр класса Presentation
  $pres = new Presentation();
  try {
    # Предположим, что первая фигура на первом слайде — это таблица
    $someTable = $pres->getSlides()->get_Item(0)->getShapes()->get_Item(0);
    # Устанавливает высоту шрифта ячеек первой строки
    $portionFormat = new PortionFormat();
    $portionFormat::setFontHeight(25);
    $someTable->getRows()->get_Item(0)->setTextFormat($portionFormat);
    # Устанавливает выравнивание текста ячеек первой строки и правый отступ
    $paragraphFormat = new ParagraphFormat();
    $paragraphFormat::setAlignment(TextAlignment->Right);
    $paragraphFormat::setMarginRight(20);
    $someTable->getRows()->get_Item(0)->setTextFormat($paragraphFormat);
    # Устанавливает вертикальный тип текста ячеек второй строки
    $textFrameFormat = new TextFrameFormat();
    $textFrameFormat::setTextVerticalType(TextVerticalType::Vertical);
    $someTable->getRows()->get_Item(1)->setTextFormat($textFrameFormat);
    # Сохраняет презентацию на диск
    $pres->save("result.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

Установить форматирование текста на уровне столбцов таблицы

  1. Создайте экземпляр класса Presentation и загрузите презентацию,
  2. Получите ссылку на слайд по его индексу.
  3. Получите нужный объект Table со слайда.
  4. Установите для ячеек первого столбца метод setFontHeight(float value).
  5. Установите для ячеек первого столбца методы setAlignment(int value) и setMarginRight(float value).
  6. Установите для ячеек второго столбца метод setTextVerticalType(byte value).
  7. Сохраните изменённую презентацию.

Этот PHP‑код демонстрирует операцию:

  # Создаёт экземпляр класса Presentation
  $pres = new Presentation();
  try {
    # Предположим, что первая фигура на первом слайде — это таблица
    $someTable = $pres->getSlides()->get_Item(0)->getShapes()->get_Item(0);
    # Устанавливает высоту шрифта ячеек первого столбца
    $portionFormat = new PortionFormat();
    $portionFormat::setFontHeight(25);
    $someTable->getColumns()->get_Item(0)->setTextFormat($portionFormat);
    # Устанавливает выравнивание текста ячеек первого столбца и правый отступ одним вызовом
    $paragraphFormat = new ParagraphFormat();
    $paragraphFormat::setAlignment(TextAlignment->Right);
    $paragraphFormat::setMarginRight(20);
    $someTable->getColumns()->get_Item(0)->setTextFormat($paragraphFormat);
    # Устанавливает вертикальный тип текста ячеек второго столбца
    $textFrameFormat = new TextFrameFormat();
    $textFrameFormat::setTextVerticalType(TextVerticalType::Vertical);
    $someTable->getColumns()->get_Item(1)->setTextFormat($textFrameFormat);
    $pres->save("result.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

Получить свойства стиля таблицы

Aspose.Slides позволяет получать свойства стиля таблицы, чтобы использовать эти детали для другой таблицы или в другом месте. Этот PHP‑код демонстрирует, как получить свойства стиля из предустановленного стиля таблицы:

  $pres = new Presentation();
  try {
    $table = $pres->getSlides()->get_Item(0)->getShapes()->addTable(10, 10, array(100, 150 ), array(5, 5, 5 ));
    $table->setStylePreset(TableStylePreset->DarkStyle1);// изменить предустановленную тему стиля по умолчанию

    $pres->save("table.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

FAQ

Можно ли применить темы/стили PowerPoint к уже созданной таблице?

Да. Таблица наследует тему слайда/макета/мастер‑слайда, при этом вы всё равно можете переопределять заливки, границы и цвета текста поверх этой темы.

Можно ли сортировать строки таблицы, как в Excel?

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

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

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