Иногда возникает такая ситуация когда данные нужно передать из MySQL (или другой БД), в Excel. В данной статье пойдёт речь о том как написать небольшой скрипт, для передачи данных в документы Excel, есть одно условие, у вас должен быть установлен Excel.

Создаётся новый документ Excel в 3 шага.

Шаг первый: Устанавливаем связь с Excel.
Шаг второй: Указываем, будет ли визуально открыта программа или нет.
Шаг третий: Указываем программе, что нужно открыть новый документ.

Для установки связи с Excel будем использовать COM-объект:

1.Создаём переменную $excel, и пишем

$excel = new COM("Excel.Application");

2.Видимость указывается в свойстве Visible() объекта Application(). 1-видим, 0-нет.

$excel->Application->Visible = 1;
$excel->DisplayAlerts = 0;

говорим о том, что не хотим видеть ошибки.

3. Создаём новый документ при помощи метода Add() объекта Workbooks():

$excel->Workbooks->Add();

Если вы хотите открыть ранее созданный документ Excel, можете этого добиться при помощи метода Open() объекта Workbooks().

$excel->Workbooks->Open("C:
ew.xls");

Для создания нового документа, код имеет такой вид:

< ?php
$excel = new COM("Excel.Application");
$excel->Application->Visible = 1;
$excel->DisplayAlerts = 0;
$excel->Workbooks->Add();
?>

Для открытия уже существующего документа, код будет выглядеть так:

< ?php
$excel = new COM("Excel.Application");
$excel->Application->Visible = 1;
$excel->DisplayAlerts = 0;
$excel->Workbooks->Open("C:
ew.xls");
?>

Теперь давайте произведём запись в открытый документ. Вводим новую переменную $write и пишем:

$write =$excel ->Range("A1");

Как вы наверно поняли «А» - Это столбец, «1» - это строка.
Записываем данные в указанный столбец и строку:

$write ->Value = "Пишем на PHP!!!";

Сохраняем изменения, методом SaveAs() объекта Workbooks():

$excel ->Workbooks[1]->SaveAs("C:
ew.xls");

Закрываем документ

unset($write);
$excel->Quit();

Освобождаем память (нечего её засорять!)

$excel->Release();
$excel = Null;
$write = Null;

Можете проверить, произошла ли запись в документ new.xls откройте, и убедитесь в этом.
Подведём итог, у нас получился небольшой скрип, для записи данных в Excel, весь скрипт выглядит так:

< ?php

$excel = new COM("Excel.Application");
$excel->Application->Visible = 1;
$excel->DisplayAlerts = 0;
$excel->Workbooks->Add();
// создаём новый документ

//$excel->Workbooks->Open("C:
ew.xls");
// открываем уже существующий

$write =$excel ->Range("A1");
$write ->Value = "Пишем на PHP!!!";
$excel ->Workbooks[1]->SaveAs("C:
ew.xls");
unset($write);

$excel->Quit();
$excel->Release();
$excel = Null;
$write = Null;

?>

Теперь попробуем задать параметры шрифта:
Вначале вводим текст:

$write =$excel ->Range("A1");
$write ->Value = "В выделенном блоке текст будет жирный, подчеркнутый, наклонный, красный ";
$write =$excel ->Range("A2");
$write ->Value = "Шрифт будет иметь высоту 12";
$write =$excel ->Range("A3");
$write ->Value = "Имя шрифта - Times New Roman";

Теперь выделяем нужный нам участок листа:

$change=$excel->Selection->Range("A1:A3");

Задаём параметры:

$change->Font->Bold = true; // Жирный
$change->Font->Italic = true; // Курсив
$change->Font->Underline = true; // Подчеркнутый
$change->Font->Name = "Times New Roman"; // Выбираем шрифт Times New Roman
$change->Font->Size = 12; // Указываем размер шрифта
$change ->Font->ColorIndex = 3; // Задаём красный цвет

И в целом мы получим такой скрипт:

< ?php

$excel = new COM("Excel.Application");
$excel->Application->Visible = 1;
$excel->DisplayAlerts = 0;
$excel->Workbooks->Add();

$write =$excel ->Range("A1");
$write ->Value = "В выделенном блоке текст будет жирный, подчеркнутый, наклонный, красный";
$write =$excel ->Range("A2");
$write ->Value = "Шрифт будет иметь высоту 12";
$write =$excel ->Range("A3");
$write ->Value = "Имя шрифта - Times New Roman";

$change=$excel->Selection->Range("A1:A3");
$change->Font->Bold = true;
$change->Font->Italic = true;
$change->Font->Underline = true;
$change->Font->Name = "Times New Roman";
$change->Font->Size = 12;
$change ->Font->ColorIndex = 3;

$excel ->Workbooks[1]->SaveAs("C:
ew.xls");

unset($write);
$excel->Quit();
$excel->Release();
$excel = Null;
$write = Null;

?>

В заключение опишу ещё несколько полезных команд.

Установить ширину для всех колонок

$excel ->ActiveSheet->StandardWidth = 5;

Задаём ширину колонки:

$write=$excel->Selection->Range("A:A"); // Выбираем нужные колонки
$write->ColumnWidth=5; //Ширина

Задание отступа в ячейках или ячейке

$Align = $excel->Range("A1"); //Выбираем диапазон ячеек
$Align->IndentLevel = 5; // Задаём отступ

С помощью метода Select(); можно выбирать не только ячейки но и листы (вкладки):

$selected=$excel->Sheets("Лист2");
$selected->Select();

Лист2 – название листа (вкладки).

$add=$excel->Sheets->Add(); // Добавление нового листа (вкладки).

Если это первое добавление нового листа, то ему присваивается имя "Лист4". Лист добавляется перед активным листом. т.е. если до вызова метода Add() метод выбора листа Select() не вызывался, то новый лист добавляется в начало списка листов. Имя листа содержится в свойстве Name() объекта Sheets().

Если вы хотите переименовать лист, вам поможет следующая функция:

$rename=$excel->Sheets("Лист1");
$rename->Name = "ТЕСТ";

Выравнивание по горизонтали:

За выравнивание по горизонтали отвечает свойство HorizontalAlignment().

Выровнять значение можно как в одной ячейке, так и в диапазоне ячеек. Для этого надо выделить ячейку (или диапазон ячеек), и присвоить свойству HorizontalAlignment() одно из 8 предопределенных значений:

• HorizontalAlignment = 1
- выравнивание по значению (используется по умолчанию);

• HorizontalAlignment = 2
- выравнивание по левому краю;

• HorizontalAlignment = 3
- выравнивание по центру;

• HorizontalAlignment = 4
- выравнивание по правому краю;

• HorizontalAlignment = 5
- выравнивание с заполнением;

• HorizontalAlignment = 6
- выравнивание по ширине;

• HorizontalAlignment = 7
- выравнивание по центру выделения;

• HorizontalAlignment = 8
- распределение по горизонтали.

Приведу пример в котором все значения в первой строке будут выровнены по ширине:

$Align = $excel->Range("1:1");
$Align->HorizontalAlignment = 6;

Выравнивание по вертикали:

За выравнивание по вертикали отвечает свойство VerticalAlignment().

• VerticalAlignment = 1
- выравнивание по верхнему краю;

• VerticalAlignment = 2
- выравнивание по центру;

• VerticalAlignment = 3
- выравнивание по нижнему краю (значение по умолчанию);

• VerticalAlignment = 4
- выравнивание по высоте;

• VerticalAlignment = 5
- распределение по вертикали

По аналогии вы можете выровнять значения.

Работа с таблицей:

Все свойства таблицы находятся в массиве объектов Borders().Каждый элемент этого массива отвечает за определенную часть таблицы (верхняя граница таблицы, нижняя, внутренние линии и т.д.). А уже у каждого элемента массива есть свои свойства, которые определяются только для данного объекта:
Давайте создадим табличу с координатами B2-E10, с синим бордюром и красными ячейками. Вот код :

< ?php

$excel = new COM("Excel.Application");
$excel->Application->Visible = 1;
$excel->Workbooks->Add();
$excel->DisplayAlerts = 0;

// Задаем область таблицы

$change=$excel->Selection->Range("B2:E10");

// Задаем свойства левой стенки таблицы

$BordersLeft=$change->Borders("7");
$BordersLeft->LineStyle = 1;
$BordersLeft->Weight = 3;
$BordersLeft->ColorIndex = 5;

// Задаем свойства верхней стенки таблицы

$BordersTop=$change->Borders("8");
$BordersTop->LineStyle = 1;
$BordersTop->Weight = 3;
$BordersTop->ColorIndex = 5;

// Задаем свойства нижней стенки таблицы

$BordersBottom=$change->Borders("9");
$BordersBottom->LineStyle = 1;
$BordersBottom->Weight = 3;
$BordersBottom->ColorIndex = 5;

// Задаем свойства правой стенки таблицы

$BordersRight=$change->Borders("10");
$BordersRight->LineStyle = 1;
$BordersRight->Weight = 3;
$BordersRight->ColorIndex = 5;

// Задаем свойства внутренних вертикальных линий

$BordersVertical=$change->Borders("11");
$BordersVertical->LineStyle = 1;
$BordersVertical->Weight = 2;
$BordersVertical->ColorIndex = 3;

// Задаем свойства внутренних горизонтальных линий

$BordersHorizontal=$change->Borders("12");
$BordersHorizontal->LineStyle = 1;
$BordersHorizontal->Weight = 2;
$BordersHorizontal->ColorIndex = 3;
$excel ->Workbooks[1]->SaveAs("C:
ew.xls");
$excel->Quit();
$excel->Release();
$excel = Null;
$write = Null;

?>

Как вы заметили в коде появился новые операторы LineStyle(), и Weight.

LineStyle() (тип линии) может принимать значения от 1 до 13, а Weight (толщина) может принимать значения от 1 до 4.
Теперь, если ваш шёф затребует такой скрипт, вы не будете впадать в отчаянье и рвать волосы на голове. Так как теперь вы знаете как работать с MS Excel средствами PHP.



Постоянные ссылки

При копировании ссылка на TeaM RSN обязательна!

URI

Html (ЖЖ)

BB-код (Для форумов)

Оставить комментарий

Вы должны войти, чтобы оставить комментарий.