Yii + PHPExcel
1. Качаем phpexcel
2. Распаковываем в корень папку Classes (в данном случае это localhost)
/** Include PHPExcel */
require_once dirname(__FILE__) . '/PHPExcel.php';
<? php
$path = $_SERVER['HTTP_HOST'] . '/phpexcel/export.php';
if (isset($array))
$array = '?val='.json_encode($array);
echo "<iframe id='ifr' src=http://$path/$array align='left' seamless></iframe>";
8.view создаем ссылку
$myar = ['id' => 53, 'title' => 2, 'name' => ['lol', 'op']];
echo CHtml::ajaxLink(
$text = 'Click me', array('req'), $ajaxOptions = array(
'type' => 'POST',
'update' => '#excel',
'data' => $myar,
), $htmlOptions = array(
)
);
создаем невидимый див
<div id="excel" style= "display:none"></div>
9.контролер
public function actionReq()
{
$array = null;
if (isset($_POST)) $array = $_POST;
$content = $this->renderPartial('application.views.site.pages.excel', array('array'=>$array));
}
10.По клику появляется документ.
11.В \webroot\phpexcel\export.php
if (isset($_GET)) $array = $_GET ;
$array = json_decode($array['val'], true);
var_dump($array);
11. Таким образом из представления мы можеи передать данные в PHPExcel
12. Пример формирования таблицы
//выгрузка из sql запроса
while ($row = pg_fetch_row($rs))
{
$objPHPExcel->getActiveSheet()->SetCellValue('A' . $rowCount, $row[0]);
// Set cell Bn to the "age" column from the database (assuming you have a column called age)
// where n is the Excel row number (ie cell A1 in the first row)
$objPHPExcel->getActiveSheet()->SetCellValue('B' . $rowCount, $row[2]);
// Increment the Excel row counter
$rowCount++;
}
//Объединение ячеек
$objPHPExcel->getActiveSheet()->mergeCells('A1:C1');
$objPHPExcel->getActiveSheet()->mergeCellsByColumnAndRow(5, 6, 5, 8);
//Заполнение ячеек
$objPHPExcel->getActiveSheet()->SetCellValue('f6', 'Сегодня ');
$objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(5, 1, 'Сегодня ' . $title .' '.date('d-m-Y'));
2. Распаковываем в корень папку Classes (в данном случае это localhost)
3. Создаем тестовый файл export.php
4. Скопируем туда код из примера 01simple-download-xls
5.Поправьте
/** Include PHPExcel */
require_once dirname(__FILE__) . '/PHPExcel.php';
6.Получим
Так мы проверили PHPExcel
7. Теперь Yii
создаем в \webroot\site\protected\views\site\pages\excel.php
$path = $_SERVER['HTTP_HOST'] . '/phpexcel/export.php';
if (isset($array))
$array = '?val='.json_encode($array);
echo "<iframe id='ifr' src=http://$path/$array align='left' seamless></iframe>";
8.view создаем ссылку
$myar = ['id' => 53, 'title' => 2, 'name' => ['lol', 'op']];
echo CHtml::ajaxLink(
$text = 'Click me', array('req'), $ajaxOptions = array(
'type' => 'POST',
'update' => '#excel',
'data' => $myar,
), $htmlOptions = array(
)
);
создаем невидимый див
<div id="excel" style= "display:none"></div>
9.контролер
public function actionReq()
{
$array = null;
if (isset($_POST)) $array = $_POST;
$content = $this->renderPartial('application.views.site.pages.excel', array('array'=>$array));
}
10.По клику появляется документ.
11.В \webroot\phpexcel\export.php
if (isset($_GET)) $array = $_GET ;
$array = json_decode($array['val'], true);
var_dump($array);
11. Таким образом из представления мы можеи передать данные в PHPExcel
12. Пример формирования таблицы
//выгрузка из sql запроса
while ($row = pg_fetch_row($rs))
{
$objPHPExcel->getActiveSheet()->SetCellValue('A' . $rowCount, $row[0]);
// Set cell Bn to the "age" column from the database (assuming you have a column called age)
// where n is the Excel row number (ie cell A1 in the first row)
$objPHPExcel->getActiveSheet()->SetCellValue('B' . $rowCount, $row[2]);
// Increment the Excel row counter
$rowCount++;
}
//Объединение ячеек
$objPHPExcel->getActiveSheet()->mergeCells('A1:C1');
$objPHPExcel->getActiveSheet()->mergeCellsByColumnAndRow(5, 6, 5, 8);
//Заполнение ячеек
$objPHPExcel->getActiveSheet()->SetCellValue('f6', 'Сегодня ');
$objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(5, 1, 'Сегодня ' . $title .' '.date('d-m-Y'));
Комментарии
Отправить комментарий