В настоящее время я работаю над проектом, который требует, чтобы я взял загруженный файл электронной таблицы (XLSX, XLS и т. Д.), Поместил его в массив, затем на основе родительских и дочерних отношений построил таблицу HTML, структурированную для отображения Настройка рефералов MLM.
Например:
First Name | Last Name | Parent | Child
John Johnson 0 1
Mary Sue 1 2
Harold Fineberg 1 3
Gerald George 2 4
(Извините за слабое структурирование, чтобы объяснить это)
Я хочу показать, кто бы ни был чьим-то ребенком, его информация помещена в таблицу относительно родителя.
Я пытался использовать PhpSpreadsheet, но безрезультатно. Я не использую базу данных, поскольку это будет простая загрузка вашей электронной таблицы и отображение ее в таблице с соответствующими отношениями, сгруппированными вместе.
Любая помощь будет принята с благодарностью, так как это первый пост для меня, а также первый проект MLM tree / excel!
<code><?php
require 'vendor/autoload.php';
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
if(isset($_POST['upload'])) {
$filename = $_FILES['sheet']['tmp_name'];
//$data = csv_to_array($filename);
$spreadsheet = PhpOffice\PhpSpreadsheet\IOFactory::load($filename);
$worksheet = $spreadsheet->getActiveSheet();
$rows = [];
foreach ($worksheet->getRowIterator() AS $row) {
$cellIterator = $row->getCellIterator();
$cellIterator->setIterateOnlyExistingCells(FALSE); // This loops through all cells,
$cells = [];
foreach ($cellIterator as $cell) {
$cells[] = $cell->getValue();
}
$rows[] = $cells;
}
// echo '<pre>';
// print_r($rows);
// echo '
';
// $ output = fopen ('test.xlsx', 'w');
// foreach ($ рядов как $ файл) {
// $ result = [];
// array_walk_recursive ($ file, use ($ item) use (& $ result) {
// $ result [] = $ item;
//});
//}
// $ writer = \ PhpOffice \ PhpSpreadsheet \ IOFactory :: createWriter ($ result, "Xlsx");
// $ writer-> save ("05featuredemo.xlsx");
function buildTree (массив $ elements, $ parentId = 0) {
$ branch = array ();
foreach ($ elements как $ element) {
if ($ element [0] == $ parentId) {
$ children = buildTree ($ elements, $ element [0]);
if ($ children) {
$ element [1] = $ children;
}
$ branch [] = $ element;
}
}
возврат $ ветка;
}
$ tree = buildTree ($ row);
}
?>
<! DOCTYPE html>
Заголовок страницы
Это то, с чем я работал. Я узнал, как красиво поместить его в массив, но я не могу преобразовать его в линейное древовидное представление:
Parent
Child
Child
Child
Child
Child
Child
Прокомментированный код - это то, что я пробовал, но не удалил из-за возможной полезности. Если мне не нужно использовать PhpSpreadhseet, это было бы здорово, но я могу пойти на компромисс.