Forumlar / National / Russian / Модули и плагины / Плагин или Модуль для импорта данных из Excel в базу данных Cotonti

Kabak
#1 2025-01-09 16:02

Есть ли такой инструмент или какое-нибудь решение такого импорта ?  или идею как это упростить и создать.

Alex300
#2 2025-01-10 07:12

Готовое расширение - это врядли. Обычно они пишутся под конкретные задачи и формат файла. Вот это можно использовать для создания расширения: https://github.com/PHPOffice/PhpSpreadsheet

Есть миры, не здесь, там, где небеса горят, и моря засыпают, и реки дремлют; люди сделаны из дыма, а города – из песен. Где-то опасность, где-то несправедливость, даже где-то остыл чай. Идем Эйс, у нас много работы!...
...Sorry for my english...
Бесплатные расширения для Cotonti: https://lily-software.com/free-scripts/
prostogorod
#3 2025-01-10 15:00

Еще можно использовать библиотеку box/spout позволяет читать Excel-файлы и писать в них построчно и очень быстро.

Kabak
#4 2025-02-23 12:19
#48175 Alex300:

Готовое расширение - это врядли. Обычно они пишутся под конкретные задачи и формат файла. Вот это можно использовать для создания расширения: https://github.com/PHPOffice/PhpSpreadsheet

Как правильно подключить к движку PhpSpreadsheet ?

prostogorod
#5 2025-02-23 13:23
#48296 Kabak:

Как правильно подключить к движку PhpSpreadsheet ?

 

Подключить можно с помощью  Composer. Можно почитать https://www.cotonti.com/forums?m=posts&q=9371

 install PhpSpreadsheet инструкция   https://phpspreadsheet.readthedocs.io/en/latest/#installation

 

Bu gönderi prostogorod tarafından düzenlendi (2025-02-23 13:31, 3 haftalar önce)
Kabak
#6 2025-02-23 14:40

Получается без устновленного на сервере Conposer и PhpSpreadsheet плагин по импорту из Excel в MySQL работать не будет ?

Alex300
#7 2025-02-23 15:31

А разве composer на сервере проблема?
Даже если и так, можно все собрать локально, а потом перенести на сервер. И будет работать.

Есть миры, не здесь, там, где небеса горят, и моря засыпают, и реки дремлют; люди сделаны из дыма, а города – из песен. Где-то опасность, где-то несправедливость, даже где-то остыл чай. Идем Эйс, у нас много работы!...
...Sorry for my english...
Бесплатные расширения для Cotonti: https://lily-software.com/free-scripts/
Kabak
#8 2025-02-23 15:36

т.е. Composer и PhpSpreadsheet нужны только для сборки плагина ?

 

Ведь функции будут из библиотеки PhpSpreadsheet вызываться.  т.е.  эта библиотека  в любм случае нужна или вместе с плгагином или на сервере

 

Или я туплю ?

Bu gönderi Kabak tarafından düzenlendi (2025-02-23 15:43, 3 haftalar önce)
Kopusha
#9 2025-02-23 16:18

С помошью Composer ставится на ваш сервер расширение  PhpSpreadsheet и уже его использует плагин. Как то так.

Kabak
#10 2025-03-15 09:22
#48299 prostogorod:
#48296 Kabak:

Как правильно подключить к движку PhpSpreadsheet ?

 

Подключить можно с помощью  Composer. Можно почитать https://www.cotonti.com/forums?m=posts&q=9371

 install PhpSpreadsheet инструкция   https://phpspreadsheet.readthedocs.io/en/latest/#installation

 

1) Как правильно подключить его в код плагина для Cotonti ?

2) я туплю с путями .  Нужно в папки плагина скорировать  PhpSpreadsheet или как указать правильный путь на сервере ?

в их примере указан код 

require_once(__DIR__ . '/vendor/autoload.php');
//или
require 'vendor/autoload.php';
// всё равно не работает

$spreadsheet = new PhpOffice\PhpSpreadsheet\Spreadsheet();
$spreadsheet->getProperties();
$sheet = $spreadsheet->getActiveSheet();
$sheet->setCellValue('A1', 'Hello');
$sheet->setCellValue('B1', 'World');

$writer = new PhpOffice\PhpSpreadsheet\Writer\Xlsx($spreadsheet);
$writer->save('HelloWorld.xlsx');

но, он точно не будет работать , потому что пути к файлам библиотеки неправильно укзаны.

 

Как правильно подключить PhpSpreadsheet в код плагина для Cotonti ?

Bu gönderi Kabak tarafından düzenlendi (2025-03-15 19:56, 1 günler önce)
Alex300
#11 2025-03-17 05:22

Как правильно подключить его в код плагина для Cotonti ?

Инструкция по установке.

В корне проекта выполнить

composer require phpoffice/phpspreadsheet

или

в файл composer.json в секцию require добавить строку

"phpoffice/phpspreadsheet": "^4.1"

и выполнить

composer update

Какой способ выбрать - разницы нет - результат будет одинаковый. В любом случае в composer.json будет добавлена нужная запись а в папку lib/vendor будет установлен PhpSpreadsheet со всеми засисимостями, готовый к использованию. Потом эту папку перенесете на production сервер, использовать на нем composer нет особой необходимости.

и далее в коде Вашего плагина:

<?php
/**
 * Этот файл работает с таблицами
 */

use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;

// ...
$spreadsheet = new Spreadsheet();
$activeWorksheet = $spreadsheet->getActiveSheet();
$activeWorksheet->setCellValue('A1', 'Hello World !');

// .. еще какие то действия с таблицами

$writer = new Xlsx($spreadsheet);
$writer->save('hello world.xlsx');

// ...

 

require_once(__DIR__ . '/vendor/autoload.php');
//или
require 'vendor/autoload.php';
// всё равно не работает

Автозагрузчик подключать самому не надо. Cotonti его сам подключает.

Есть миры, не здесь, там, где небеса горят, и моря засыпают, и реки дремлют; люди сделаны из дыма, а города – из песен. Где-то опасность, где-то несправедливость, даже где-то остыл чай. Идем Эйс, у нас много работы!...
...Sorry for my english...
Бесплатные расширения для Cotonti: https://lily-software.com/free-scripts/
Bu gönderi Alex300 tarafından düzenlendi (2025-03-17 11:47, 7 saatler önce)
Kabak
#12 2025-03-17 05:38

Да, нигде не было указано, что на сервере нужно зайти в корневую папку проекта и там пыполнить

composer require phpoffice/phpspreadsheet

 

всё заработало