Php выгрузка в excel: backnet – ответы на простые вопросы и не очень
php — Экспорт данных из php в excel — Qaru
Генерация XLS на PHP
Очень часто необходимо делать экспорт каких-то данных, например, из базы данных в Excel-файл. Например, какой-нибудь прайс-лист преобразовать в удобный формат из базы данных и сгенерировать XLS-файл, который смогут без проблем скачать посетители.
Как сделать экспорт большой таблицы в Excel средствами PHP?
И вот как генерировать XLS на PHP, я расскажу в этой статье.
Нам потребуется с Вами отдельная библиотека, которая позволяет работать с Excel-файлами. Называется она PHPExcel, и скачать её можно здесь: http://phpexcel.codeplex.com.
Давайте её применим для генерация Excel-файла через PHP-скрипт:
После выполнения скрипта у Вас рядом с PHP-файлом появится XLSX-файл, который Вы легко сможете открыть в Excel 2007 или более поздней версии.
Вообще, библиотека достаточно большая и там есть очень много возможностей. Но представленных в данной статье уже более, чем достаточно для большинства случаев.
Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!
Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.
Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления
Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.
Порекомендуйте эту статью друзьям:
Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):
- Кнопка:
Она выглядит вот так:
- Текстовая ссылка:
Она выглядит вот так: Как создать свой сайт
- BB-код ссылки для форумов (например, можете поставить её в подписи):
работа с excel файлами с помощью PHP
- Подробности
- Категория: HTML, CSS, javascript, PHP
Очень полезная библиотека для выгрузок данных в эксель, а так же для загрузок данных из экселя.
Для работы с библиотекой скопируем папку classes.
Код для чтения XLS файла и вывода данных в виде HTML таблицы.
<?php /** Error reporting */ error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); date_default_timezone_set('Europe/London'); require_once 'PHPExcel-1.8/Classes/PHPExcel.php'; $excel = PHPExcel_IOFactory::load('simple.xls'); Foreach($excel ->getWorksheetIterator() as $worksheet) { $lists[] = $worksheet->toArray(); } foreach($lists as $list){ echo '<table border="1">'; // Перебор строк foreach($list as $row){ echo '<tr>'; // Перебор столбцов foreach($row as $col){ echo '<td>'.$col.'</td>'; } echo '</tr>'; } echo '</table>'; } ?>
Создание XLS файла с помощью PHPExcel
<?php /** Error reporting */ error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); date_default_timezone_set('Europe/London'); require_once('PHPExcel-1.8/Classes/PHPExcel.php'); // Подключаем класс для вывода данных в формате excel require_once('PHPExcel-1.8/Classes/PHPExcel/Writer/Excel2007.php'); // Создаем объект класса PHPExcel $xls = new PHPExcel(); // Устанавливаем индекс активного листа $xls->setActiveSheetIndex(0); // Получаем активный лист $sheet = $xls->getActiveSheet(); // Подписываем лист $sheet->setTitle('Таблица умножения'); // Вставляем текст в ячейку A1 $sheet->setCellValue("A1", 'Таблица умножения'); $sheet->getStyle('A1')->getFill()->setFillType( PHPExcel_Style_Fill::FILL_SOLID); $sheet->getStyle('A1')->getFill()->getStartColor()->setRGB('EEEEEE'); // Объединяем ячейки $sheet->mergeCells('A1:h2'); // Выравнивание текста $sheet->getStyle('A1')->getAlignment()->setHorizontal( PHPExcel_Style_Alignment::HORIZONTAL_CENTER); for ($i = 2; $i < 10; $i++) { for ($j = 2; $j < 10; $j++) { // Выводим таблицу умножения $sheet->setCellValueByColumnAndRow( $i - 2, $j, $i . "x" .$j . "=" . ($i*$j)); // Применяем выравнивание $sheet->getStyleByColumnAndRow($i - 2, $j)->getAlignment()-> setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); } } // Выводим HTTP-заголовки header ( "Expires: Mon, 1 Apr 1974 05:00:00 GMT" ); header ( "Last-Modified: " . gmdate("D,d M YH:i:s") . " GMT" ); header ( "Cache-Control: no-cache, must-revalidate" ); header ( "Pragma: no-cache" ); header ( "Content-type: application/vnd.ms-excel" ); header ( "Content-Disposition: attachment; filename=matrix.xls" ); // Выводим содержимое файла $objWriter = new PHPExcel_Writer_Excel5($xls); $objWriter->save('php://output'); ?>
Если вам нужно файл сохранить, а не “выбросить” его сразу, то не нужно выводить HTTP-заголовки и вместо “php://output” следует указать путь к вашему файлу.
Чтобы сделать комментарий, нужно авторизоваться на сайте!
PHP-библиотеки, которые помогут вам экспортировать данные в формат Excel
Microsoft Excel по-прежнему наиболее широко используется как инструмент для анализа данных и создании различных отчетов.
Если вы когда-либо разрабатывали какое-либо корпоративное приложение, то среди требований, предъявляемых к нему, обязательно присутствовало требование организовать экспорт в формате Microsoft Excel.
В этой статье мы рассмотрим различные варианты организации экспорта данных в таблицы Excel, доступные для PHP-разработчика.
PHPExcel
Страница библиотеки на GitHub
- В этой библиотеке доступно самое большое количество опции, она активно поддерживается сообществом разработчиков.
- Присутствует поддержка изображений, диаграмм, формул и многостраничных документов.
- Библиотека может быть расширена: вы можете путем добавления кода для генерации документов различных форматов, которые вам необходимы. Есть поддержка PDF и DOC файлов.
- Библиотека имеет подробную документацию, которую в силе понять даже начинающий PHP-разработчик.
- Возможно загружать существующие Excel файлы, для использования их в качестве шаблона для заполнения данными.
- Есть поддержка формата openXML, который используется в приложении Open Office и MS Office 2007 и более новых версиях.
php-excel
Страница библиотеки на Google Code
- Небольшая библиотека с минимальной функциональностью, необходимой для экспорта данных в простой файл Excel
- Отлично подойдет для экспорта данных в простой одностраничный файл Excel
- При открытии полученного файла в MS Excel 2007 или более новой версии, будет показано предупреждение, что файл находится в ненадлежащем формате.
- Вывод осуществляется только в браузер.
- Изображения, диаграммы и формулы не поддерживаются.
Php export data
Страница библиотеки на GitHub
- Библиотека создана на основе php-excel, описанной выше
- Кроме формата xls поддерживает экспорт в форматы tsv и csv
- Поддержка вывода в браузер или файл
Excel Writer(XML) for PHP
Страница библиотеки на Sourceforge
- Поддержка формул Excel
- Создание многостраничных файлов
- Поддержка форматирования
- Поддержка экспорта данных прямо из таблиц базы данных MySQL
- Библиотека создает файлы в формате XML MS Office 2003, которые могут свободно открыты в Microsoft Excel (правда расширение файла может ввести пользователя в заблуждение).
Использовали ли Вы какую-либо из представленных библиотек (а может быть какую-нибудь другую) для экспорта данных в формате Excel в вашем PHP-приложении? Если да, то поделитесь своими впечатлениями в комментариях.
Оригинал статьи — http://webdeveloperplus.com/php/5-libraries-to-generate-excel-reports-in-php/
Приложение для загрузки/выгрузки Excel-таблиц на php
Подробная документация по модулю теперь тут
Данное приложение позволяет администратору выгружать объявления в excel-таблицу. После выгрузки можно исправить значения, либо добавить новые значения. После этого такой файл можно загрузить в базу.
Причем если вы хотите загрузить свой файл Excel, которые не соответствует структуре выгружаемого файла, то с помощью конструктора сопоставляющего поля из базы данных с колонками из вашего excel-файла, можно добиться соответствия и успешно заполнить базу сайта при помощи таких файлов. Иногда после такой загрузки требуется небольшая обработка записей, например, указать в объявлении привязку к пользователю, выбрать галочки для публикации или специального предложения. Но вы можете задать эти поля и своих файлах excel.
Процесс установки приложения
Вам необходимо купить приложение. После оплаты это приложение будет доступно для скачивания. Для этого заходим в личный кабинет, здесь переходим в Услуги / Продукты.
Выбираем в строке Приложения — Excel загрузка/выгрузка – Просмотреть данные. Выбираем закладку Загрузки.
Скачиваем себе на жесткий диск архив excel.zip, распаковываем архив.
Затем при помощи FTP загружаем папку excel со всем содержимым к себе на сайт в каталог ./apps/
На этом установка завершена. Теперь можно перейти в панель управления и зайти в пункт меню Приложения / Excel.
Доступны два режима
· Выгрузка объявлений в Excel-файл
· Загрузка объявлений на сайт из Excel-файла
Подробнее об этих режимах:
Выгрузка объявлений в Excel-файл
Для активации этого режима нажмите ссылку справа «Выгрузить в Excel». Появиться форма в которой можно указать параметры выгрузки. Например, выгрузить объявления только определенного пользователя и определенной категории опубликованный на данный момент.
После выбора параметров нажимаем кнопку «Выгрузить в Excel» под формой параметров.
На ваш диск будет сохранен файл в формате dataYYYY-MM-DD_hh_mm.xlsx
Вы можете открыть этот файл при помощи Microsoft Excel версии не ниже 2007.
При редактировании файла допускается добавление новых значений. Важно сохранить ID-записи, так как именно по этому полю выполнятся поиск и обновления записей в базе данных сайта. Также можно добавлять новые строки. При этом новые строки, у которых поле ID – не заполнено, то будет создана новая запись с новым ID.
При указании раздела нужно помнить что важно сохранить полный путь, например Аренда/1-комн. Загрузчик на основе этого пути определит в какую категорию из существующих на сайте добавить это объявление. Если загрузчик не найдет нужной категории, то он создаст новую категорию. Например, если у вас на сайте нет категории Коммерческая/Офисы, то будет создана родительская категория Коммерческая и внутри нее Офисы.
Если поле раздел оставить пустым, то загрузчик автоматически создаст раздел «Категория не указана» и сложит туда все записи с пустым разделом. Затем можно вручную назначить нужные категории.
Загрузка объявлений на сайт из Excel-файла
Когда вы подготовите нужный файл для загрузки, то можно выбрать этот файл в форме слева, при помощи кнопки «select xls file…»
После загрузки файла на сервер, в нижней части будут загружены первые 10 строк из этого файла, тут в первой строке указываются поля из базы данных сайта. Во второй строке выпадающие списки со значениями заголовков колонок из excel-файла. Загрузчик сначала попробует автоматически подобрать соответствующие значение для каждой колонки. Если значение не найдено, то в выпадающем списке будет выбрано «нет соответствия». В дальнейшем поля у которых «нет соответствия» — будут игнорированы при загрузке.
Когда будут выбраны все нужны соответствия, можете нажать ссылку внизу «Загрузить в базу»
Выгружаем данные в Excel. Цивилизованно / Хабр
Есть в IT-отрасли задачи, которые на фоне успехов в big data, machine learning, blockchain и прочих модных течений выглядят совершенно непривлекательно, но на протяжении десятков лет не перестают быть актуальными для целой армии разработчиков. Речь пойдёт о старой как мир задаче формирования и выгрузки Excel-документов, с которой сталкивался каждый, кто когда-либо писал приложения для бизнеса.
Какие возможности построения файлов Excel существуют в принципе?
- VBA-макросы. В наше время по соображениям безопасности идея использовать макросы чаще всего не подходит.
- Автоматизация Excel внешней программой через API. Требует наличия Excel на одной машине с программой, генерирующей Excel-отчёты. Во времена, когда клиенты были толстыми и писались в виде десктопных приложений Windows, такой способ годился (хотя не отличался скоростью и надёжностью), в нынешних реалиях это с трудом достижимый случай.
- Генерация XML-Excel-файла напрямую. Как известно, Excel поддерживает XML-формат сохранения документа, который потенциально можно сгенерировать/модифицировать с помощью любого средства работы с XML. Этот файл можно сохранить с расширением .xls, и хотя он, строго говоря, при этом не является xls-файлом, Excel его хорошо открывает. Такой подход довольно популярен, но к недостаткам следует отнести то, что всякое решение, основанное на прямом редактировании XML-Excel-формата, является одноразовым «хаком», лишенным общности.
- Наконец, возможна генерация Excel-файлов с использованием open source библиотек, из которых особо известна Apache POI. Разработчики Apache POI проделали титанический труд по reverse engineering бинарных форматов документов MS Office, и продолжают на протяжении многих лет поддерживать и развивать эту библиотеку. Результат этого reverse engineering-а, например, используется в Open Office для реализации сохранения документов в форматах, совместимых с MS Office.
На мой взгляд, именно последний из способов является сейчас предпочтительным для генерации MS Office-совместимых документов. С одной стороны, он не требует установки никакого проприетарного ПО на сервер, а с другой стороны, предоставляет богатый API, позволяющий использовать все функциональные возможности MS Office.
Но у прямого использования Apache POI есть и недостатки. Во-первых, это Java-библиотека, и если ваше приложение написано не на одном из JVM-языков, вы ей вряд ли сможете воспользоваться. Во-вторых, это низкоуровневая библиотека, работающая с такими понятиями, как «ячейка», «колонка», «шрифт». Поэтому «в лоб» написанная процедура генерации документа быстро превращается в обильную «лапшу» трудночитаемого кода, где отсутствует разделение на модель данных и представление, трудно вносить изменения и вообще — боль и стыд. И прекрасный повод делегировать задачу самому неопытному программисту – пусть ковыряется.
Но всё может быть совершенно иначе. Проект Xylophone под лицензией LGPL, построенный на базе Apache POI, основан на идее, которая имеет примерно 15-летнюю историю. В проектах, где я участвовал, он использовался в комбинации с самыми разными платформами и языками – а счёт разновидностей форм, сделанных с его помощью в самых разнообразных проектах, идёт, наверное, уже на тысячи. Это Java-проект, который может работать как в качестве утилиты командной строки, так и в качестве библиотеки (если у вас код на JVM-языке — вы можете подключить её как Maven-зависимость).
Xylophone реализует принцип отделения модели данных от их представления. В процедуре выгрузки необходимо сформировать данные в формате XML (не беспокоясь о ячейках, шрифтах и разделительных линиях), а Xylophone, при помощи Excel-шаблона и дескриптора, описывающего порядок обхода вашего XML-файла с данными, сформирует результат, как показано на диаграмме:
Шаблон документа (xls/xlsx template) выглядит примерно следующим образом:
Как правило, заготовку такого шаблона предоставляет сам заказчик. Вовлечённый заказчик с удовольствием принимает участие в создании шаблона: начиная с выбора нужной формы из «Консультанта» или придумывания собственной с нуля, и заканчивая размерами шрифтов и ширинами разделительных линий. Преимущество шаблона в том, что мелкие правки в него легко вносить уже тогда, когда отчёт полностью разработан.
Когда «оформительская» работа выполнена, разработчику остаётся
- Создать процедуру выгрузки необходимых данных в формате XML.
- Создать дескриптор, описывающий порядок обхода элементов XML-файла и копирования фрагментов шаблона в результирующий отчёт
- Обеспечить привязку ячеек шаблона к элементам XML-файла с помощью XPath-выражений.
С выгрузкой в XML всё более-менее понятно: достаточно выбрать адекватное XML-представление данных, необходимых для заполнения формы. Что такое дескриптор?
Если бы в форме, которую мы создаём, не было повторяющихся элементов с разным количеством (таких, как строки накладной, которых разное количество у разных накладных), то дескриптор выглядел бы следующим образом:
<element name="root">
<output range="A1:Z100"/>
</element>
Здесь root – название корневого элемента нашего XML-файла с данными, а диапазон A1:Z100 – это прямоугольный диапазон ячеек из шаблона, который будет скопирован в результат. При этом, как можно видеть из предыдущей иллюстрации, подстановочные поля, значения которых заменяются на данные из XML-файла, имеют формат ~{XPath-выражение}
(тильда, фигурная скобка, XPath-выражение относительно текущего элемента XML, закрывающая фигурная скобка).
Что делать, если в отчёте нам нужны повторяющиеся элементы? Естественным образом их можно представить в виде элементов XML-файла с данными, а помочь проитерировать по ним нужным образом помогает дескриптор. Повторение элементов в отчёте может иметь как вертикальное направление (когда мы вставляем строки накладной, например), так и горизонтальное (когда мы вставляем столбцы аналитического отчёта). При этом мы можем пользоваться вложенностью элементов XML, чтобы отразить сколь угодно глубокую вложенность повторяющихся элементов отчёта, как показано на диаграмме:
Красными квадратиками отмечены ячейки, которые будут являться левым верхним углом очередного прямоугольного фрагмента, который пристыковывает генератор отчёта.
Есть и ещё один возможный вариант повторяющихся элементов: листы в книге Excel. Возможность организовать такую итерацию тоже имеется.
Рассмотрим чуть более сложный пример. Допустим, нам надо получить сводный отчёт наподобие следующего:
Пусть диапазон лет для выгрузки выбирает пользователь, поэтому в этом отчёте динамически создаваемыми являются как строки, так и столбцы. XML-представление данных для такого отчёта может выглядеть следующим образом:testdata.xml
<?xml version="1.0" encoding="UTF-8"?>
<report>
<column year="2016"/>
<column year="2017"/>
<column year="2018"/>
<item name="Товар 1">
<year amount="365"/>
<year amount="286"/>
<year amount="207"/>
</item>
<item name="Товар 2">
<year amount="95"/>
<year amount="606"/>
<year amount="840"/>
</item>
<item name="Товар 3">
<year amount="710"/>
<year amount="437"/>
<year amount="100"/>
</item>
<totals>
<year amount="1170"/>
<year amount="1329"/>
<year amount="1147"/>
</totals>
</report>
Мы вольны выбирать названия тэгов по своему вкусу, структура также может быть произвольной, но с оглядкой на простоту конвертации в отчёт. Например, выводимые на лист значения я обычно записываю в атрибуты, потому что это упрощает XPath-выражения (удобно, когда они имеют вид @имяатрибута
).
Шаблон такого отчёта будет выглядеть так (сравните XPath-выражения с именами атрибутов соответствующих тэгов):
Теперь наступает самая интересная часть: создание дескриптора. Т. к. это практически полностью динамически собираемый отчёт, дескриптор довольно сложен, на практике (когда у нас есть только «шапка» документа, его строки и «подвал») всё обычно гораздо проще. Вот какой в данном случае необходим дескриптор:descriptor.xml
<?xml version="1.0" encoding="UTF-8"?>
<element name="report">
<!-- Создаём лист -->
<output worksheet="Отчет" sourcesheet="Лист1"/>
<!-- И за ним слева направо заголовки столбцов -->
<iteration mode="horizontal">
<element name="(before)">
<!-- Выводим пустую ячейку в ЛВУ сводной таблицы -->
<output range="A1"/>
</element>
<element name="column">
<output range="B1"/>
</element>
</iteration>
<!-- Выводим строки: итерация с режимом вывода умолчанию, сверху вниз -->
<iteration mode="vertical">
<element name="item">
<!-- И по строке - слева направо -->
<iteration mode="horizontal">
<element name="(before)">
<!-- Заголовок строки -->
<output range="A2"/>
</element>
<!-- И за ним слева направо строку с данными -->
<element name="year">
<output range="B2"/>
</element>
</iteration>
</element>
</iteration>
<iteration>
<element name="totals">
<iteration mode="horizontal">
<element name="(before)">
<!-- Заголовок строки -->
<output range="A3"/>
</element>
<!-- И за ним слева направо строку с данными -->
<element name="year">
<output range="B3"/>
</element>
</iteration>
</element>
</iteration>
</element>
Полностью элементы дескриптора описаны в документации. Вкратце, основные элементы дескриптора означают следующее:
- element — переход в режим чтения элемента XML-файла. Может или являться корневым элементом дескриптора, или находиться внутри
iteration
. С помощью атрибутаname
могут быть заданы разнообразные фильтры для элементов, напримерname="foo"
— элементы с именем тэга fooname="*"
— все элементыname="tagname[@attribute='value']"
— элементы с определённым именем и значением атрибутаname="(before)"
,name="(after)"
— «виртуальные» элементы, предшествующие итерации и закрывающие итерацию.
- iteration — переход в режим итерации. Может находиться только внутри
element
. Могут быть выставлены различные параметры, напримерmode="horizontal"
— режим вывода по горизонтали (по умолчанию — vertical)index=0
— ограничить итерацию только самым первым встреченным элементом
- output — переход в режим вывода. Основные атрибуты следующие:
sourcesheet
—лист книги шаблона, с которого берётся диапазон вывода. Если не указывать, то применяется текущий (последний использованный) лист.range
– диапазон шаблона, копируемый в результирующий документ, например “A1:M10”, или “5:6”, или “C:C”. (Применение диапазонов строк типа “5:6” в режиме вывода horizontal и диапазонов столбцов типа “C:C” в режиме вывода vertical приведёт к ошибке).worksheet
– если определён, то в файле вывода создаётся новый лист и позиция вывода смещается в ячейку A1 этого листа. Значение этого атрибута, равное константе или XPath-выражению, подставляется в имя нового листа.
В действительности всевозможных опций в дескрипторе гораздо больше, смотрите документацию.
Ну что же, настало время скачать Xylophone и запустить формирование отчёта.
Возьмите архив с bintray или Maven Central (NB: на момент прочтения этой статьи возможно наличие более свежих версий). В папке /bin находится shell-скрипт, при запуске которого без параметров вы увидите подсказку о параметрах командной строки. Для получения результата нам надо «скормить» ксилофону все приготовленные ранее ингредиенты:
xylophone -data testdata.xml -template template.xlsx -descr descriptor.xml -out report.xlsx
Открываем файл report.xlsx и убеждаемся, что получилось именно то, что нам нужно:
Так как библиотека ru.curs:xylophone доступна на Maven Central под лицензией LGPL, её можно без проблем использовать в программах на любом JVM-языке. Пожалуй, самый компактный полностью рабочий пример получается на языке Groovy, код в комментариях не нуждается:
@Grab('ru.curs:xylophone:6.1.3')
import ru.curs.xylophone.XML2Spreadsheet
baseDir = '.'
new File(baseDir, 'testdata.xml').withInputStream {
input ->
new File(baseDir, 'report.xlsx').withOutputStream {
output ->
XML2Spreadsheet.process(input,
new File(baseDir, 'descriptor.xml'),
new File(baseDir, 'template.xlsx'),
false, output)
}
}
println 'Done.'
У класса XML2Spreadsheet
есть несколько перегруженных вариантов статического метода process
, но все они сводятся к передаче всё тех же «ингредиентов», необходимых для подготовки отчёта.
Важная опция, о которой я до сих пор не упомянул — это возможность выбора между DOM и SAX парсерами на этапе разбора файла с XML-данными. Как известно, DOM-парсер загружает весь файл в память целиком, строит его объектное представление и даёт возможность обходить его содержимое произвольным образом (в том числе повторно возвращаясь в один и тот же элемент). SAX-парсер никогда не помещает файл с данными целиком в память, вместо этого обрабатывает его как «поток» элементов, не давая возможности вернуться к элементу повторно.
Использование SAX-режима в Xylophone (через параметр командной строки -sax
или установкой в true
параметра useSax
метода XML2Spreadsheet.process
) бывает критически полезно в случаях, когда необходимо генерировать очень большие файлы. За счёт скорости и экономичности к ресурсам SAX-парсера скорость генерации файлов возрастает многократно. Это даётся ценой некоторых небольших ограничений на дескриптор (описано в документации), но в большинстве случаев отчёты удовлетворяют этим ограничениям, поэтому я бы рекомендовал использование SAX-режима везде, где это возможно.
Надеюсь, что способ выгрузки в Excel через Xylophone вам понравился и сэкономит много времени и нервов — как сэкономил нам.
И напоследок ещё раз ссылки:
Экспорт результатов запроса Mysql в Excel?
Переполнение стека
- Около
Продукты
- Для команд
Переполнение стека
Общественные вопросы и ответыПереполнение стека для команд
Где разработчики и технологи делятся частными знаниями с коллегамиВакансии
Программирование и связанные с ним технические возможности карьерного ростаТалант
Нанимайте технических специалистов и создавайте свой бренд работодателяРеклама
Обратитесь к разработчикам и технологам со всего мира- О компании
Загрузка…
.
Дамп PHP $ _REQUEST в файл
Переполнение стека
- Около
Продукты
- Для команд
Переполнение стека
Общественные вопросы и ответыПереполнение стека для команд
Где разработчики и технологи делятся частными знаниями с коллегамиВакансии
Программирование и связанные с ним технические возможности карьерного ростаТалант
Нанимайте технических специалистов и создавайте свой бренд работодателяРеклама
Обратитесь к разработчикам и технологам со всего мира- О компании
.
php — Импорт файла Excel в MySQL
Переполнение стека
- Около
Продукты
- Для команд
Переполнение стека
Общественные вопросы и ответыПереполнение стека для команд
Где разработчики и технологи делятся частными знаниями с коллегамиВакансии
Программирование и связанные с ним технические возможности карьерного ростаТалант
Нанимайте технических специалистов и создавайте свой бренд работодателяРеклама
Обратитесь к разработчикам и технологам со всего мира- О компании
.