PhpSpreadsheet. Быстрый старт. Таблица с картинками
Йо! Часто нам нужно выгрузить, что-то в excel, например каталог с картинками и его свойствами. Это вполне тривиальная задача, но я помню, что меня пугала работа с картинками и изучение библиотеки PhpSpreadsheet. Однажды мне пришлось этим заняться, когда пришёл заказ на создание выгрузки заказа из Bitirix’а (конечно пришлось поработать ещё и с кодировкой для правильной работы). По результатам работы я написал статью. А сегодня я расскажу как создать и выгрузить таблицу с картинками в PHP c помощью PhpSpreadsheet.
Установка
Подключаемся по ssh к нашему серверу и устанавливаем композер в папку с проектом:
Далее ставим PhpSpreadsheet:
composer require phpoffice/phpspreadsheet
Создание структуры документа
Создаём файл __ВАШЕ__НАЗВАНИЕ__.php в удобном месте и заходим в него. Там подключаем подключаем библиотеку и юзам нужные namespases:
И так… мы подключили. Теперь нам нужно создать новый экземпляр «документа», выбрать текущую вкладку и добавить на неё заголовки:
И вы наверное уже поняли какая будет таблица и структура массива из которого мы будем её строить. Но на всякий случай я покажу вам тот самый массив:
Соответственно нам нужно дальше идти по массиву и вставлять в данные нужные ячейки.
Далее нужно сделать преобразование колонкой «A» — выставить ширину по всей вкладке. И тут проблема! Ширина выставляется в единицах измерения excel’я так, что подберите свою, но кажется что соотношение с пикселями примерно 1/5
При значении ширины колонки 20, а ширины картинки 100 получиться примерно так:
Запись на сервер
После того как мы получили все данные осталось записать на сервер нашу excel’ку)
Ещё бы было не плохо отдавать ссылку на файл, чтобы качать с сайта.
В моём случае нужна была переиспользуемая функция и я обернул кода так:
Поддержи Xakplant
Я давно хочу развить видеоверсию, но пока этого не получается из-за нехватки ресурсов. Сейчас я собираю деньги на новый компьютер и микрофон. Поддержи xaklant и ты увидишь полезные видео быстрее.
Источник
PHP Создание таблиц MySQL
В этом уроке вы узнаете, как создавать таблицы в базе данных MySQL с помощью PHP.
Создание таблиц с помощью SQL
В предыдущем уроке мы узнали, как создать базу данных на сервере MySQL. Шаги по созданию таблицы аналогичны созданию баз данных. Разница в том, что вместо создания новой базы данных мы подключимся к существующей базе данных и создадим таблицу в этой базе данных. Для подключения к существующей базе данных мы можем передать дополнительную переменную «имя базы данных» при подключении к MySQL.
Теперь пришло время создать таблицу внутри базы данных, которые фактически будут хранить данные. Информация в таблице организована в строки и столбцы.
Новые таблицы добавляются в существующую базу данных с помощью оператора SQL CREATE TABLE .
За оператором CREATE TABLE следует имя создаваемой таблицы, за которым следует список имен и определений каждого столбца таблицы, разделенный запятыми.
Мы создадим таблицу с именем «persons» и столбцами: «id», «first_name», «last_name» и «email»:
После выбора базы данных в следующем примере создается таблица с именем «persons» и столбцами: «id», «first_name», «last_name» и «email». В first_name, last_name и email столбцы должны содержать значение (т.е. NOT NULL). Столбец id имеет целочисленное значение, которое имеет автоматическое приращение (AUTO_INCREMENT):
Пояснения к таблице:
Обратите внимание, что за каждым именем поля следует объявление типа данных — это объявление указывает, какой тип данных может содержать столбец, будь то целое число, строка, дата и т.д.
В таблице выше используются следующие типы данных:
- VARCHAR: содержит строку переменной длины, которая может содержать буквы, числа и специальные символы. Максимальный размер указан в скобках.
- INT: тип данных INTEGER принимает числовые значения с подразумеваемой шкалой нуля. Он хранит любое целое число от -2147483648 до 2147483647.
После типа данных вы можете указать другие необязательные атрибуты для каждого столбца:
- NOT NULL — каждая строка должна содержать значение для этого столбца, нулевые значения не допускаются.
- DEFAULT — установите значение по умолчанию, которое добавляется, когда не передается никакое другое значение.
- UNSIGNED — используется для числовых типов, ограничивает хранимые данные положительными числами и нулем.
- AUTO INCREMENT — MySQL автоматически увеличивает значение поля на 1 каждый раз, когда добавляется новая запись.
- PRIMARY KEY — используется для однозначной идентификации строк в таблице. Столбец с настройкой PRIMARY KEY часто является идентификационным номером и часто используется с AUTO_INCREMENT.
Каждая таблица должна иметь столбец первичного ключа (в данном случае столбец «id»). Его значение должно быть уникальным для каждой записи в таблице.
Понимание значений NULL и NOT NULL
Если для столбца указано значение NULL, то в базу данных можно добавить строку, если этому столбцу не присвоено значение. И наоборот, если столбец определен как NOT NULL, то перед добавлением строки в таблицу ему должно быть присвоено значение.
Первичный ключ PRIMARY KEY
Первичный ключ — это столбец, используемый для идентификации отдельных записей в таблице. Значение столбца первичного ключа должно быть уникальным в контексте таблицы, в которой он существует, или, если несколько столбцов объединены, чтобы составить первичный ключ, комбинация значений ключа должна быть уникальной для каждой строки.
Первичный ключ определяется с помощью оператора PRIMARY KEY во время создания таблицы. Если используется несколько столбцов, они разделяются запятыми:
Автоматическое приращение AUTO_INCREMENT
AUTO_INCREMENT — одно из самых простых, но наиболее полезных определений столбцов в языке SQL. По сути, когда столбец определяется с помощью AUTO_INCREMENT, значение столбца автоматически увеличивается каждый раз, когда в таблицу добавляется новая строка. Это особенно полезно при использовании столбца в качестве первичного ключа. Используя AUTO_INCREMENT, нет необходимости писать операторы SQL для вычисления нового уникального идентификатора для каждой строки. Все это обрабатывается сервером MySQL при добавлении строки.
При использовании AUTO_INCREMENT необходимо соблюдать два правила. Во-первых, статус AUTO_INCREMENT может быть присвоен только одному столбцу в таблице. Во-вторых, столбец AUTO_INCREMENT должен быть проиндексирован (например, объявлен как первичный ключ).
Можно переопределить значение AUTO_INCREMENT столбца, просто указав значение при выполнении оператора INSERT. Пока указанное значение является уникальным, предоставленное значение будет использоваться в новой строке, а последующие приращения начнутся с вновь вставленного значения.
MySQL может быть запрошен для получения самого последнего значения приращения, используя функцию last_insert_id() следующим образом:
Создание таблиц БД в трех различных версиях
Теперь, когда мы понимаем SQL-запрос, давайте воспользуемся PHP для его выполнения.
Ниже описано создание таблиц в трех различных версиях: с использованием синтаксиса объектно-ориентированной процедуры MySQLi, процедурный MySQLi и процедуры PDO.
Источник
Простой PHP генератор сложных HTML таблиц
Всем привет. Хочу поделиться свеженаписанным генератором HTML таблиц.
Участились случаи сбора различной статистики и компоновки ее в сложные таблицы с различными групировками.
Заметив такую тенденцию решил автоматизировать рисование таблиц.
Как итог:
- Избавил себя от составления слоеных циклов для вывода массива;
- Получил стандартизацию структуры массивов;
Простейшая структура
Собственно сам класс статичный, имеет 1 public метод, который принимает 2 параметра и возвращает HTML код таблицы:
- $data — сам массив, который предстоит напечатать
- $tableInfo(опционально) — массив настроек таблицы
Массив $data имеет следующую структуру:
Вложенные массивы
Но это примеры простейших матриц. Главной особенностью класса является автоматический подсчет rowspan и группировка данных.
Если вместо строки данных(ячейки) вставить аналогичный массив, то все данные этого подмассива будут помещены в строку родителя:
Кастомизация
В корне массива, при перечислении строк
‘tableInfo’ расположенный в корне массива позволяет задать общие настройки и параметры для всей таблицы:
Этот же массив можно передать вторым параметром методу:
Если используются оба способа одновременно( isset($data[‘tableInfo’] && isset($tableInfo) ), то в спорных случаях приоритет отдается правилам из второго массива $tableInfo .
Пример использования title
Пример использования key
Здесь стоит упомянуть, что если key вообще не используются, то массив выводимых ключей заполняется всеми ключами ячеек(не подмассивов), которые находятся в этой строке. Например в этом случае:
Для обоих строчек массив $colKeys (массив выводимых ячеек) будет выглядеть вот так:
В любом массиве ячеек (на любом уровне)
‘tableInfo’ расположенный в массиве ячеек, может содержать настройки для строки, в которой он находится и/или настройки для каждой отдельной ячейки:
Приоритеты rowspan
- Правило для ячейки (самое главное правило);
- Правило для строки;
- Правило для таблицы;
- По умолчанию rowspan считается всегда, если присутствует подмассив.
Ну, вот и все. Некоторые моменты решил не рассматривать подробно, если будут вопросы — распишу.
Скачать класс Table
Источник
PhpSpreadsheet. Быстрый старт. Таблица с картинками
Йо! Часто нам нужно выгрузить, что-то в excel, например каталог с картинками и его свойствами. Это вполне тривиальная задача, но я помню, что меня пугала работа с картинками и изучение библиотеки PhpSpreadsheet. Однажды мне пришлось этим заняться, когда пришёл заказ на создание выгрузки заказа из Bitirix’а (конечно пришлось поработать ещё и с кодировкой для правильной работы). По результатам работы я написал статью. А сегодня я расскажу как создать и выгрузить таблицу с картинками в PHP c помощью PhpSpreadsheet.
Установка
Подключаемся по ssh к нашему серверу и устанавливаем композер в папку с проектом:
Далее ставим PhpSpreadsheet:
composer require phpoffice/phpspreadsheet
Создание структуры документа
Создаём файл __ВАШЕ__НАЗВАНИЕ__.php в удобном месте и заходим в него. Там подключаем подключаем библиотеку и юзам нужные namespases:
И так… мы подключили. Теперь нам нужно создать новый экземпляр «документа», выбрать текущую вкладку и добавить на неё заголовки:
И вы наверное уже поняли какая будет таблица и структура массива из которого мы будем её строить. Но на всякий случай я покажу вам тот самый массив:
Соответственно нам нужно дальше идти по массиву и вставлять в данные нужные ячейки.
Далее нужно сделать преобразование колонкой «A» — выставить ширину по всей вкладке. И тут проблема! Ширина выставляется в единицах измерения excel’я так, что подберите свою, но кажется что соотношение с пикселями примерно 1/5
При значении ширины колонки 20, а ширины картинки 100 получиться примерно так:
Запись на сервер
После того как мы получили все данные осталось записать на сервер нашу excel’ку)
Ещё бы было не плохо отдавать ссылку на файл, чтобы качать с сайта.
В моём случае нужна была переиспользуемая функция и я обернул кода так:
Поддержи Xakplant
Я давно хочу развить видеоверсию, но пока этого не получается из-за нехватки ресурсов. Сейчас я собираю деньги на новый компьютер и микрофон. Поддержи xaklant и ты увидишь полезные видео быстрее.
Источник