0

I am trying to use text Rotation to 90 to have cell with vertical text, but it is not working, all text shown horizontally, maybe I make something wrong? Here is my php code

$spreadsheet = new Spreadsheet();

// Create a new worksheet called "Technical Skills"
$technicalSkillsSheet = new Worksheet($spreadsheet, 'Technical Skills');
// Attach the "Technical Skills" worksheet as the first worksheet in the Spreadsheet object
$spreadsheet->addSheet($technicalSkillsSheet, TECHNICAL_SKILLS_INDEX);
$sheet = $spreadsheet->getSheet(TECHNICAL_SKILLS_INDEX);
foreach($term_sheet_array as $term_sheet){
    $sheet->setCellValue($term_sheet['cell'], $term_sheet['name']);
    $styleArray = array(
        'fill' => array(
            'fillType' => \PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID,
            'startColor' => array(
                'argb' => $term_sheet["color"],
            ),
        ),
        'alignment' => array(
            'wrapText' => TRUE,
            'textRotation' => 90,
            'vertical' => \PhpOffice\PhpSpreadsheet\Style\Alignment::VERTICAL_BOTTOM,
        ),
    );
    $sheet->getStyle($term_sheet['cell'])->applyFromArray($styleArray);
    $color_key++;

    if($color_key >= count($sheetColors)){
       $color_key = 0;
    }
}
Liora Haydont
  • 1,252
  • 1
  • 12
  • 25
Aram Gevorgyan
  • 501
  • 1
  • 6
  • 12
  • What Writer are you using? Text rotation isn't supported by all Writers – Mark Baker Dec 22 '17 at 16:23
  • I am using Xlsx, use PhpOffice\PhpSpreadsheet\Writer\Xlsx; $writer = new Xlsx($spreadsheet); $writer->save(drupal_realpath(ASSESMENTS_FOLDER) . '/hello world.xlsx'); – Aram Gevorgyan Dec 22 '17 at 17:11

2 Answers2

2

Simple:

$activeSheet->getStyle('A1')->getAlignment()->setTextRotation(90);
Imanali Mamadiev
  • 2,604
  • 2
  • 15
  • 23
0

You can define text rotation in two ways:

First way:

$styleArray = [
    'font' => [
        'bold'  =>  true,
        'size'  =>  14,
    ],
    'alignment' => [
        'textRotation' => 90,
        'horizontal' => \PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER,
        'vertical' => \PhpOffice\PhpSpreadsheet\Style\Alignment::VERTICAL_CENTER
    ]
];
$activeSheet->getStyle('A1')->getAlignment()->applyFromArray($styleArray);

Second way:

$activeSheet->getStyle('A1')->getAlignment()->setTextRotation(90);
Hedayatullah Sarwary
  • 2,664
  • 3
  • 24
  • 38