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.
Result of php executing
Full code of xls.php
- <?php
- function style($addres, $param, $sheet){ // адрес ячейки, параметры ячейки?
- $datastyle=[];
- //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;
- //BorderInside:BORDER_THIN;BorderTop:BORDER_HAIR;BorderLeft:BORDER_HAIR;BorderRight:BORDER_HAIR;
- // нужно разделить параметры стилей
- $data=explode(";", $param); // тут все стили
- // нужно перебрать все стили
- for ($i=0; $i<count($data); $i++){ // перебираем каждый стиль
- $style=explode(":", $data[$i]); // узнаем значения каждого стиля
- for ($j=1; $j<count($style); $j++){ // перебираем данные в стиле
- if ($style[0]=='FontName'){ // шрифт текста
- $datastyle=array_merge_recursive($datastyle,['font' => ['name' => $style[$j]]]);
- //$sheet->getStyle($addres)->applyFromArray(['font' => ['name' => $style[$j]]]);
- }
- if ($style[0]=='Size'){ // размер шрифта
- $datastyle=array_merge_recursive($datastyle,['font' => ['size' => $style[$j]]]);
- //$sheet->getStyle($addres)->applyFromArray(['font' => ['size' => $style[$j]]]);
- }
- if ($style[0]=='Algin' and $style[$j]=='VertCenter'){ // выравнивание текста по вертикали по центру
- $datastyle=array_merge_recursive($datastyle,['alignment' => ['vertical' => '\PhpOffice\PhpSpreadsheet\Style\Alignment::VERTICAL_CENTER']]);
- //$sheet->getStyle($addres)->applyFromArray(['alignment' => ['vertical' => \PhpOffice\PhpSpreadsheet\Style\Alignment::VERTICAL_CENTER]]);
- }
- if ($style[0]=='Algin' and $style[$j]=='Bottom'){ // выравнивание текста по вертикали по нижнему краю
- $datastyle=array_merge_recursive($datastyle,['alignment' => ['vertical' => '\PhpOffice\PhpSpreadsheet\Style\Alignment::VERTICAL_BOTTOM']]);
- //$sheet->getStyle($addres)->applyFromArray(['alignment' => ['vertical' => \PhpOffice\PhpSpreadsheet\Style\Alignment::VERTICAL_BOTTOM]]);
- }
- if ($style[0]=='Algin' and $style[$j]=='Top'){ // выравнивание текста по верхнему краю
- $datastyle=array_merge_recursive($datastyle,['alignment' => ['vertical' => '\PhpOffice\PhpSpreadsheet\Style\Alignment::VERTICAL_TOP']]);
- //$sheet->getStyle($addres)->applyFromArray(['alignment' => ['vertical' => \PhpOffice\PhpSpreadsheet\Style\Alignment::VERTICAL_TOP]]);
- }
- if ($style[0]=='Algin' and $style[$j]=='Left'){ // выравнивание текста по левому краю
- $datastyle=array_merge_recursive($datastyle,['alignment' => ['horizontal' => '\PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_LEFT']]);
- //$sheet->getStyle($addres)->applyFromArray(['alignment' => ['horizontal' => \PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_LEFT]]);
- }
- if ($style[0]=='Algin' and $style[$j]=='Center'){ // выравнивание текста по центру
- $datastyle=array_merge_recursive($datastyle,['alignment' => ['horizontal' => '\PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER']]);
- //$sheet->getStyle($addres)->applyFromArray(['alignment' => ['horizontal' => \PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER]]);
- }
- if ($style[0]=='Algin' and $style[$j]=='Right'){ // выравнивание текста по правому краю
- $datastyle=array_merge_recursive($datastyle,['alignment' => ['horizontal' => '\PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_RIGHT']]);
- //$sheet->getStyle($addres)->applyFromArray(['alignment' => ['horizontal' => \PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_RIGHT]]);
- }
- if ($style[0]=='Warp'){ // перенос текста
- $datastyle=array_merge_recursive($datastyle,['alignment' => ['wrapText' => $style[$j]]]);
- //$sheet->getStyle($addres)->applyFromArray(['alignment' => ['wrapText' => $style[$j]]]);
- }
- if ($style[0]=='BorderAllBorders' and $style[$j]=='BORDER_HAIR'){ // Все Границы ячейки со стилем границ точки
- $datastyle=array_merge_recursive($datastyle,['borders' => ['allBorders' => ['borderStyle' => '\PhpOffice\PhpSpreadsheet\Style\Border::BORDER_HAIR']]]);
- //$sheet->getStyle($addres)->applyFromArray(['borders' => ['allBorders' => ['borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_HAIR]]]);
- }
- if ($style[0]=='BorderAllBorders' and $style[$j]=='BORDER_THIN'){ // Все Границы ячейки со стилем границ сплошная
- $datastyle=array_merge_recursive($datastyle,['borders' => ['allBorders' => ['borderStyle' => '\PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN']]]);
- //$sheet->getStyle($addres)->applyFromArray(['borders' => ['allBorders' => ['borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN]]]);
- }
- if ($style[0]=='FontColor'){ // Цвет текста
- $datastyle=array_merge_recursive($datastyle,['font' => ['color' => ['rgb' => $style[$j]]]]);
- //$sheet->getStyle($addres)->applyFromArray(['font' => ['color' => ['rgb' => $style[$j]]]]);
- }
- if ($style[0]=='Bold'){ // Жирный текст
- $datastyle=array_merge_recursive($datastyle,['font' => ['bold' => $style[$j]]]);
- //$sheet->getStyle($addres)->applyFromArray(['font' => ['bold' => $style[$j]]]);
- }
- if ($style[0]=='Italic'){ // Курсивный текст
- $datastyle=array_merge_recursive($datastyle,['font' => ['italic' => $style[$j]]]);
- //$sheet->getStyle($addres)->applyFromArray(['font' => ['italic' => $style[$j]]]);
- }
- if ($style[0]=='BorderTop' and $style[$j]=='BORDER_HAIR'){ // верхняя граница ячейки точки
- $datastyle=array_merge_recursive($datastyle,['borders' => ['top' => ['borderStyle' => '\PhpOffice\PhpSpreadsheet\Style\Border::BORDER_HAIR']]]);
- //$sheet->getStyle($addres)->applyFromArray(['borders' => ['top' => ['borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_HAIR]]]);
- }
- if ($style[0]=='BorderLeft' and $style[$j]=='BORDER_HAIR'){ // левая граница ячейки точки
- $datastyle=array_merge_recursive($datastyle,['borders' => ['left' => ['borderStyle' => '\PhpOffice\PhpSpreadsheet\Style\Border::BORDER_HAIR']]]);
- //$sheet->getStyle($addres)->applyFromArray(['borders' => ['left' => ['borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_HAIR]]]);
- }
- if ($style[0]=='BorderRight' and $style[$j]=='BORDER_HAIR'){ // правая граница ячейки точки
- $datastyle=array_merge_recursive($datastyle,['borders' => ['right' => ['borderStyle' => '\PhpOffice\PhpSpreadsheet\Style\Border::BORDER_HAIR']]]);
- //$sheet->getStyle($addres)->applyFromArray(['borders' => ['right' => ['borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_HAIR]]]);
- }
- if ($style[0]=='BorderBottom' and $style[$j]=='BORDER_HAIR'){ // нижняя граница ячейки точки
- $datastyle=array_merge_recursive($datastyle,['borders' => ['bottom' => ['borderStyle' => '\PhpOffice\PhpSpreadsheet\Style\Border::BORDER_HAIR']]]);
- //$sheet->getStyle($addres)->applyFromArray(['borders' => ['bottom' => ['borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_HAIR]]]);
- }
- if ($style[0]=='BorderInside' and $style[$j]=='BORDER_HAIR'){ // внутренние границы ячейки точки
- $datastyle=array_merge_recursive($datastyle,['borders' => ['inside' => ['borderStyle' => '\PhpOffice\PhpSpreadsheet\Style\Border::BORDER_HAIR']]]);
- //$sheet->getStyle($addres)->applyFromArray(['borders' => ['inside' => ['borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_HAIR]]]);
- }
- if ($style[0]=='Fill'){ // Заливка ячейки
- $datastyle=array_merge_recursive($datastyle,['fill' => ['fillType' => '\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID','color' => ['rgb' => $style[$j]]]]);
- //$sheet->getStyle($addres)->applyFromArray(['fill' => ['fillType' => \PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID,'color' => ['rgb' => $style[$j]]]]);
- }
- if ($style[0]=='BorderColor'){ // Цвет границ ячейки
- foreach ($datastyle as $key => $value) {
- // Проверяем, есть ли переменная со стилем границы в текущем элементе
- if (isset($value['borders'])) {
- // Шаг 2: Перебираем разные типы границ
- foreach (['top', 'left', 'right', 'bottom', 'inside', 'allBorders'] as $borderType) {
- // Проверяем, есть ли стиль границы данного типа
- if (isset($value['borders'][$borderType]['borderStyle'])) {
- // Добавление цвета границы
- $datastyle[$key]['borders'][$borderType]['color']['rgb'] = $style[$j];
- }
- }
- }
- }
- //$datastyle=array_merge_recursive($datastyle,['borders' => ['allBorders' => ['color' => ['rgb' => $style[$j]]]]]);
- //$sheet->getStyle($addres)->applyFromArray(['borders' => ['allBorders' => ['color' => ['rgb' => $style[$j]]]]]);
- }
- }
- }
- //$sheet->getStyle($addres)->applyFromArray($datastyle);
- print_r ($datastyle);
- }
- style('A1', 'Bold:true;Algin:Top:Center;Warp:true;BorderTop:BORDER_HAIR;BorderLeft:BORDER_HAIR;BorderRight:BORDER_HAIR;BorderColor:CCCCCC', 'sheet');
- ?>