xls - PHP Online

Form of PHP Sandbox

Enter Your PHP code here for testing/debugging in the Online PHP Sandbox. As in the usual PHP files, you can also add HTML, but do not forget to add the tag <?php in the places where the PHP script should be executed.



Your result can be seen below.

Result of php executing





Full code of xls.php

  1. <?php
  2. function style($addres, $param, $sheet){                     // адрес ячейки, параметры ячейки?
  3.                         $datastyle=[];
  4.                         //FontName:Tahoma;Size:8;Algin:Top:Center:Left:Right:Bottom:VertCenter;Warp:true;BorderAllBorders:BORDER_HAIR;BorderColor:CCCCCC;FontColor:800080;Italic:true;Bold:true;BorderBottom:BORDER_HAIR;Fill:CCFFFF;
  5.                         //BorderInside:BORDER_THIN;BorderTop:BORDER_HAIR;BorderLeft:BORDER_HAIR;BorderRight:BORDER_HAIR;
  6.                         // нужно разделить параметры стилей
  7.                         $data=explode(";", $param); // тут все стили
  8.                         // нужно перебрать все стили
  9.                         for ($i=0; $i<count($data); $i++){ // перебираем каждый стиль
  10.                                 $style=explode(":", $data[$i]); // узнаем значения каждого стиля
  11.                                 for ($j=1; $j<count($style); $j++){ // перебираем данные в стиле
  12.                                         if ($style[0]=='FontName'){                                                                                                    // шрифт текста
  13.                                                 $datastyle=array_merge_recursive($datastyle,['font' => ['name' => $style[$j]]]);
  14.                                                 //$sheet->getStyle($addres)->applyFromArray(['font' => ['name' => $style[$j]]]);
  15.                                         }
  16.                                         if ($style[0]=='Size'){                                                                                                                // размер шрифта
  17.                                                 $datastyle=array_merge_recursive($datastyle,['font' => ['size' => $style[$j]]]);
  18.                                                 //$sheet->getStyle($addres)->applyFromArray(['font' => ['size' => $style[$j]]]);
  19.                                         }
  20.                                         if ($style[0]=='Algin' and $style[$j]=='VertCenter'){                                                // выравнивание текста по вертикали по центру
  21.                                                 $datastyle=array_merge_recursive($datastyle,['alignment' => ['vertical' => '\PhpOffice\PhpSpreadsheet\Style\Alignment::VERTICAL_CENTER']]);
  22.                                                 //$sheet->getStyle($addres)->applyFromArray(['alignment' => ['vertical' => \PhpOffice\PhpSpreadsheet\Style\Alignment::VERTICAL_CENTER]]);
  23.                                         }
  24.                                         if ($style[0]=='Algin' and $style[$j]=='Bottom'){                                                    // выравнивание текста по вертикали по нижнему краю
  25.                                                 $datastyle=array_merge_recursive($datastyle,['alignment' => ['vertical' => '\PhpOffice\PhpSpreadsheet\Style\Alignment::VERTICAL_BOTTOM']]);
  26.                                                 //$sheet->getStyle($addres)->applyFromArray(['alignment' => ['vertical' => \PhpOffice\PhpSpreadsheet\Style\Alignment::VERTICAL_BOTTOM]]);
  27.                                         }
  28.                                         if ($style[0]=='Algin' and $style[$j]=='Top'){                                                               // выравнивание текста по верхнему краю
  29.                                                 $datastyle=array_merge_recursive($datastyle,['alignment' => ['vertical' => '\PhpOffice\PhpSpreadsheet\Style\Alignment::VERTICAL_TOP']]);
  30.                                                 //$sheet->getStyle($addres)->applyFromArray(['alignment' => ['vertical' => \PhpOffice\PhpSpreadsheet\Style\Alignment::VERTICAL_TOP]]);
  31.                                         }
  32.                                         if ($style[0]=='Algin' and $style[$j]=='Left'){                                                              // выравнивание текста по левому краю
  33.                                                 $datastyle=array_merge_recursive($datastyle,['alignment' => ['horizontal' => '\PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_LEFT']]);
  34.                                                 //$sheet->getStyle($addres)->applyFromArray(['alignment' => ['horizontal' => \PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_LEFT]]);
  35.                                         }
  36.                                         if ($style[0]=='Algin' and $style[$j]=='Center'){                                                    // выравнивание текста по центру
  37.                                                 $datastyle=array_merge_recursive($datastyle,['alignment' => ['horizontal' => '\PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER']]);
  38.                                                 //$sheet->getStyle($addres)->applyFromArray(['alignment' => ['horizontal' => \PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER]]);
  39.                                         }
  40.                                         if ($style[0]=='Algin' and $style[$j]=='Right'){                                                     // выравнивание текста по правому краю
  41.                                                 $datastyle=array_merge_recursive($datastyle,['alignment' => ['horizontal' => '\PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_RIGHT']]);
  42.                                                 //$sheet->getStyle($addres)->applyFromArray(['alignment' => ['horizontal' => \PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_RIGHT]]);
  43.                                         }
  44.                                         if ($style[0]=='Warp'){                                                                                                                // перенос текста
  45.                                                 $datastyle=array_merge_recursive($datastyle,['alignment' => ['wrapText' => $style[$j]]]);
  46.                                                 //$sheet->getStyle($addres)->applyFromArray(['alignment' => ['wrapText' => $style[$j]]]);
  47.                                         }
  48.                                         if ($style[0]=='BorderAllBorders' and $style[$j]=='BORDER_HAIR'){                   // Все Границы ячейки со стилем границ точки
  49.                                                 $datastyle=array_merge_recursive($datastyle,['borders' => ['allBorders' => ['borderStyle' => '\PhpOffice\PhpSpreadsheet\Style\Border::BORDER_HAIR']]]);
  50.                                                 //$sheet->getStyle($addres)->applyFromArray(['borders' => ['allBorders' => ['borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_HAIR]]]);
  51.                                         }
  52.                                         if ($style[0]=='BorderAllBorders' and $style[$j]=='BORDER_THIN'){                   // Все Границы ячейки со стилем границ сплошная
  53.                                                 $datastyle=array_merge_recursive($datastyle,['borders' => ['allBorders' => ['borderStyle' => '\PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN']]]);
  54.                                                 //$sheet->getStyle($addres)->applyFromArray(['borders' => ['allBorders' => ['borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN]]]);
  55.                                         }
  56.                                        
  57.                                         if ($style[0]=='FontColor'){                                                                                          // Цвет текста
  58.                                                 $datastyle=array_merge_recursive($datastyle,['font' => ['color' => ['rgb' => $style[$j]]]]);
  59.                                                 //$sheet->getStyle($addres)->applyFromArray(['font' => ['color' => ['rgb' => $style[$j]]]]);
  60.                                         }
  61.                                         if ($style[0]=='Bold'){                                                                                                       // Жирный текст
  62.                                                 $datastyle=array_merge_recursive($datastyle,['font' => ['bold' => $style[$j]]]);
  63.                                                 //$sheet->getStyle($addres)->applyFromArray(['font' => ['bold' => $style[$j]]]);
  64.                                         }
  65.                                         if ($style[0]=='Italic'){                                                                                                     // Курсивный текст
  66.                                                 $datastyle=array_merge_recursive($datastyle,['font' => ['italic' => $style[$j]]]);
  67.                                                 //$sheet->getStyle($addres)->applyFromArray(['font' => ['italic' => $style[$j]]]);
  68.                                         }
  69.                                         if ($style[0]=='BorderTop' and $style[$j]=='BORDER_HAIR'){                                  // верхняя граница ячейки точки
  70.                                                 $datastyle=array_merge_recursive($datastyle,['borders' => ['top' => ['borderStyle' => '\PhpOffice\PhpSpreadsheet\Style\Border::BORDER_HAIR']]]);
  71.                                                 //$sheet->getStyle($addres)->applyFromArray(['borders' => ['top' => ['borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_HAIR]]]);
  72.                                         }
  73.                                         if ($style[0]=='BorderLeft' and $style[$j]=='BORDER_HAIR'){                                 // левая граница ячейки точки
  74.                                                 $datastyle=array_merge_recursive($datastyle,['borders' => ['left' => ['borderStyle' => '\PhpOffice\PhpSpreadsheet\Style\Border::BORDER_HAIR']]]);
  75.                                                 //$sheet->getStyle($addres)->applyFromArray(['borders' => ['left' => ['borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_HAIR]]]);
  76.                                         }
  77.                                         if ($style[0]=='BorderRight' and $style[$j]=='BORDER_HAIR'){                                // правая граница ячейки точки
  78.                                                 $datastyle=array_merge_recursive($datastyle,['borders' => ['right' => ['borderStyle' => '\PhpOffice\PhpSpreadsheet\Style\Border::BORDER_HAIR']]]);
  79.                                                 //$sheet->getStyle($addres)->applyFromArray(['borders' => ['right' => ['borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_HAIR]]]);
  80.                                         }
  81.                                         if ($style[0]=='BorderBottom' and $style[$j]=='BORDER_HAIR'){                               // нижняя граница ячейки точки
  82.                                                 $datastyle=array_merge_recursive($datastyle,['borders' => ['bottom' => ['borderStyle' => '\PhpOffice\PhpSpreadsheet\Style\Border::BORDER_HAIR']]]);
  83.                                                 //$sheet->getStyle($addres)->applyFromArray(['borders' => ['bottom' => ['borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_HAIR]]]);
  84.                                         }
  85.                                         if ($style[0]=='BorderInside' and $style[$j]=='BORDER_HAIR'){                               // внутренние границы ячейки точки
  86.                                                 $datastyle=array_merge_recursive($datastyle,['borders' => ['inside' => ['borderStyle' => '\PhpOffice\PhpSpreadsheet\Style\Border::BORDER_HAIR']]]);
  87.                                                 //$sheet->getStyle($addres)->applyFromArray(['borders' => ['inside' => ['borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_HAIR]]]);
  88.                                         }
  89.                                         if ($style[0]=='Fill'){                                                                                                       // Заливка ячейки
  90.                                                 $datastyle=array_merge_recursive($datastyle,['fill' => ['fillType' => '\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID','color' => ['rgb' => $style[$j]]]]);
  91.                                                 //$sheet->getStyle($addres)->applyFromArray(['fill' => ['fillType' => \PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID,'color' => ['rgb' => $style[$j]]]]);
  92.                                         }
  93.                                         if ($style[0]=='BorderColor'){                                                                                         // Цвет границ ячейки
  94.                                                 foreach ($datastyle as $key => $value) {
  95.                                                         // Проверяем, есть ли переменная со стилем границы в текущем элементе
  96.                                                         if (isset($value['borders'])) {
  97.                                                                 // Шаг 2: Перебираем разные типы границ
  98.                                                                 foreach (['top', 'left', 'right', 'bottom', 'inside', 'allBorders'] as $borderType) {
  99.                                                                         // Проверяем, есть ли стиль границы данного типа
  100.                                                                         if (isset($value['borders'][$borderType]['borderStyle'])) {
  101.                                                                                 // Добавление цвета границы
  102.                                                                                 $datastyle[$key]['borders'][$borderType]['color']['rgb'] = $style[$j];
  103.                                                                         }
  104.                                                                 }
  105.                                                         }
  106.                                                 }
  107.                                                 //$datastyle=array_merge_recursive($datastyle,['borders' => ['allBorders' => ['color' => ['rgb' => $style[$j]]]]]);
  108.                                                 //$sheet->getStyle($addres)->applyFromArray(['borders' => ['allBorders' => ['color' => ['rgb' => $style[$j]]]]]);
  109.                                         }
  110.                                 }
  111.                         }
  112.                         //$sheet->getStyle($addres)->applyFromArray($datastyle);
  113.                         print_r $datastyle;
  114.                 }
  115. style('A1', 'Bold:true;Algin:Top:Center;Warp:true;BorderTop:BORDER_HAIR;BorderLeft:BORDER_HAIR;BorderRight:BORDER_HAIR;BorderColor:CCCCCC', 'sheet');
  116. ?>
File Description
  • xls
  • PHP Code
  • 09 Feb-2024
  • 9.7 Kb
You can Share it: