@sergey-nv

PHPExcel — как вставить изображения из базы данных mysql?

Есть база данных mysql с таблицей mto. Нужно средствами php получить из нее данные и вывести в файл xls. То есть, сделать экспорт. Использую для этого библиотеку phpexcel. Все столбики выводятся хорошо, все работает корректно. Но в таблице mto есть данные об изображениях для каждой строчки. То есть нужно взять информацию об изображениях из таблицы mto и на ее основе вставить изображения в файл xls. Как это сделать? Вставлять изображения нужно в столбец X, сразу после столбца W, начиная с седьмой строки. Файлы изображений лежат в папке '../admin/mto/files/'. В базе mysql в поле img1 прописаны только названия файлов изображений (с расширением), которые должны быть вставлены в таблицу xls ('Image1_2.jpg' и так далее).

Вот код:

require_once 'functions.php';
require_once 'Classes/PHPExcel.php';

$price_list = get_price();

$active_sheet->getColumnDimension('A')->setWidth(7);
$active_sheet->getColumnDimension('B')->setWidth(15);
$active_sheet->getColumnDimension('C')->setWidth(57);
$active_sheet->getColumnDimension('D')->setWidth(57);
$active_sheet->getColumnDimension('E')->setWidth(57);
$active_sheet->getColumnDimension('F')->setWidth(30);
$active_sheet->getColumnDimension('G')->setWidth(57);
$active_sheet->getColumnDimension('H')->setWidth(15);
$active_sheet->getColumnDimension('I')->setWidth(10);
$active_sheet->getColumnDimension('J')->setWidth(15);
$active_sheet->getColumnDimension('K')->setWidth(15);
$active_sheet->getColumnDimension('L')->setWidth(30);
$active_sheet->getColumnDimension('M')->setWidth(40);
$active_sheet->getColumnDimension('N')->setWidth(20);
$active_sheet->getColumnDimension('O')->setWidth(25);
$active_sheet->getColumnDimension('P')->setWidth(35);
$active_sheet->getColumnDimension('Q')->setWidth(25);
$active_sheet->getColumnDimension('R')->setWidth(25);
$active_sheet->getColumnDimension('S')->setWidth(30);
$active_sheet->getColumnDimension('T')->setWidth(35);
$active_sheet->getColumnDimension('U')->setWidth(35);
$active_sheet->getColumnDimension('V')->setWidth(35);
$active_sheet->getColumnDimension('W')->setWidth(35);
$active_sheet->getColumnDimension('X')->setWidth(35);

$active_sheet->setCellValue('A6','№п.п');
$active_sheet->setCellValue('B6','Аудитория');
$active_sheet->setCellValue('C6','Оборудование');
$active_sheet->setCellValue('D6','ПО');
$active_sheet->setCellValue('E6','Адрес');
$active_sheet->setCellValue('F6','Собственность');
$active_sheet->setCellValue('G6','Документ');
$active_sheet->setCellValue('H6','Площадь');
$active_sheet->setCellValue('I6','Места');
$active_sheet->setCellValue('J6','Примечание');
$active_sheet->setCellValue('K6','Корпус');
$active_sheet->setCellValue('L6','Лекционная аудитория');
$active_sheet->setCellValue('M6','Демонстрационное оборудование');
$active_sheet->setCellValue('N6','Учебные пособия');
$active_sheet->setCellValue('O6','Лаборатория');
$active_sheet->setCellValue('P6','Лабораторное оборудование');
$active_sheet->setCellValue('Q6','Помещение для СР');
$active_sheet->setCellValue('R6','Комп. техника');
$active_sheet->setCellValue('S6','Доступ в Интернет');
$active_sheet->setCellValue('T6','Помещение для оборудования');
$active_sheet->setCellValue('U6','Аудитория для инвалидов');
$active_sheet->setCellValue('V6','Оборудование для инвалидов');
$active_sheet->setCellValue('W6','Мебель для инвалидов');
$active_sheet->setCellValue('X6','Картинка');

$row_start = 7;
$i = 0;
foreach($price_list as $item) {

	$active_sheet->getRowDimension($i+7)->setRowHeight(500);	

	$row_next = $row_start + $i;

	$active_sheet->setCellValue('A'.$row_next,$item['id_mto']);
	$active_sheet->setCellValue('B'.$row_next,$item['audience_number']);
	$active_sheet->setCellValue('C'.$row_next,$item['purpose_equipment']);
	$active_sheet->setCellValue('D'.$row_next,$item['list_software']);
	$active_sheet->setCellValue('E'.$row_next,$item['address']);
	$active_sheet->setCellValue('F'.$row_next,$item['operational_management']);
	$active_sheet->setCellValue('G'.$row_next,$item['document']);
	$active_sheet->setCellValue('H'.$row_next,$item['square']);
	$active_sheet->setCellValue('I'.$row_next,$item['places']);
	$active_sheet->setCellValue('J'.$row_next,$item['note']);
	$active_sheet->setCellValue('K'.$row_next,$item['housing']);
	$active_sheet->setCellValue('L'.$row_next,$item['lecture_audience']);
	$active_sheet->setCellValue('M'.$row_next,$item['demonstration_equipment']);
	$active_sheet->setCellValue('N'.$row_next,$item['visual_aids']);
	$active_sheet->setCellValue('O'.$row_next,$item['laboratory']);
	$active_sheet->setCellValue('P'.$row_next,$item['laboratory_equipment']);
	$active_sheet->setCellValue('Q'.$row_next,$item['independent_work']);
	$active_sheet->setCellValue('R'.$row_next,$item['computer_technology']);
	$active_sheet->setCellValue('S'.$row_next,$item['internet_access']);
	$active_sheet->setCellValue('T'.$row_next,$item['equipment_storage']);
	$active_sheet->setCellValue('U'.$row_next,$item['disabled_classes']);
	$active_sheet->setCellValue('V'.$row_next,$item['disabled_equipment']);
	$active_sheet->setCellValue('W'.$row_next,$item['disabled_furniture']);

	$i++;

}


Вот functions.php:

<?php

require_once 'connection.php';

function get_price() {
	global $link;
	$query = "SELECT id_mto, audience_number, purpose_equipment, list_software, address, operational_management, document, square, places, note, housing, lecture_audience, demonstration_equipment, visual_aids, laboratory, laboratory_equipment, independent_work, computer_technology, internet_access, equipment_storage, disabled_classes, disabled_equipment, disabled_furniture FROM mto";
	$result = mysqli_query($link, $query);
	
	if(!$result) {
		exit(mysqli_error());
	}
	
	$row = array();

	$rows = mysqli_num_rows($result); // количество полученных строк
	
	for($i = 0 ; $i < $rows ; $i++) {
		$row[] = mysqli_fetch_assoc($result);
	}
	
	return $row;		
}
?>
  • Вопрос задан
  • 189 просмотров
Пригласить эксперта
Ответы на вопрос 1
irishmann
@irishmann
Научись пользоваться дебаггером
не забудь подключить класс PHPExcel_Worksheet_Drawing
...
$active_sheet->getColumnDimension('X')->setWidth(40); // задаем ширину столбца
$active_sheet->getRowDimension($row_next)->setRowHeight(190); // задаем высоту строки
$imagePath = dirname ( __FILE__ ) . '/excel.png'; // путь до файла
 
if (file_exists($imagePath)) {
    $logo = new PHPExcel_Worksheet_Drawing();
    $logo->setPath($imagePath);
    $logo->setCoordinates('X'.$row_next);             
    $logo->setOffsetX(0);
    $logo->setOffsetY(0);    
    $logo->setWorksheet($active_sheet); 
} 
...


подробнее можно почитать --> тут <--
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы