Прайс-лист для Яндекс карт и справочника

В Яндекс Справочнике есть возможность загрузить прайс-лист с товарами и услугами в формате XLS или XLSX, далее эти предложения будут выводится при поиске на карте.

Шаблон прайса:

Сгенерировать XLS-файл, который примет Яндекс можно в PHPExcel.

<?php
require_once __DIR__ . '/PHPExcel/Classes/PHPExcel.php';
require_once __DIR__ . '/PHPExcel/Classes/PHPExcel/Writer/Excel2007.php';
 
$xls = new PHPExcel();
$xls->setActiveSheetIndex(0);

$xls->getActiveSheet()->SetCellValue('A1', 'Категория');
$xls->getActiveSheet()->SetCellValue('B1', 'Название');
$xls->getActiveSheet()->SetCellValue('C1', 'Описание');
$xls->getActiveSheet()->SetCellValue('D1', 'Цена');
$xls->getActiveSheet()->SetCellValue('E1', 'Фото');
$xls->getActiveSheet()->SetCellValue('F1', 'Популярный товар');
$xls->getActiveSheet()->SetCellValue('G1', 'В наличии'); 

$dbh = new PDO('mysql:dbname=db_name;host=localhost', 'логин', 'пароль');
$sth = $dbh->prepare("SELECT * FROM `prods` WHERE `price` > 0");
$sth->execute();
$array = $sth->fetchAll(PDO::FETCH_ASSOC);

$i = 1;
foreach ($array as $row) {
	$sth = $dbh->prepare("SELECT * FROM `category` WHERE `id` = ?");
	$sth->execute(array($row['category']));
	$category = $sth->fetch(PDO::FETCH_ASSOC);

	$i++;
	$xls->getActiveSheet()->SetCellValue('A' . $i, $category['name']);
	$xls->getActiveSheet()->SetCellValue('B' . $i, $row['name']);
	$xls->getActiveSheet()->SetCellValue('C' . $i, strip_tags($row['text']));
	$xls->getActiveSheet()->SetCellValue('D' . $i, $row['price']);
	$xls->getActiveSheet()->SetCellValue('E' . $i, 'http://example.com/prod/' . $row['img']);
	$xls->getActiveSheet()->SetCellValue('F' . $i, 'Нет');
	$xls->getActiveSheet()->SetCellValue('G' . $i, 'Да');
} 

header("Content-type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=pricelist.xls");
$objWriter = new PHPExcel_Writer_Excel5($xls);
$objWriter->save('php://output'); 
PHP

В итоге получается файл:

После загрузки файла в справочник:

Чтобы удалить все товары, нужно загрузить файл без товарных предложений.

16.10.2019 , обновлено 25.04.2020

Комментарии

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

Другие публикации

Обзор расширений для чтения Excel файлов
В статье представлены различные PHP расширения для чтения файлов XLS, XLSX. Описаны их плюсы и минусы, а также примеры...
25.03.2018
17261
+1
Класс обертка для PDO
Класс значительно упрощает работу с PDO, сокращает код. Реализован на статических классах и не требует создание экземпляра класса.
14.03.2018
7453
+3
Примеры использования PDO MySQL
В статье приведены основные примеры работы с расширением PHP PDO. Такие как подключение к БД, получение, изменение и...
11.11.2017
27823
+1
Печать HTML страниц
Очень часто разработчики забывают про печатную версию сайта, поэтому можно встретить такой результат на бумаге...
08.04.2020
730
0
PHP класс для отправки E-mail
Отправка писем в кодировке UTF-8 и формате HTML, вложение файлов, дамп писем на сервере в файле eml.
21.12.2016
5160
+2
Чтение Google таблиц в PHP
Как получить данные из Google spreadsheets в виде массива PHP? Очень просто, Google docs позволяет экспортировать лист в формате CSV, главное чтобы файл был в общем доступе.
17.02.2019
2830
-1