public static function init() { return self::cache('cat_init', function () { $conf = Catalog::$conf; $columns = array_merge(array("Наименование", "Файлы", "Артикул", "Производитель", "Цена", "Описание", "Скрыть фильтры в полном описании"), $conf['columns']); $data =& Xlsx::init($conf['dir'], array('more' => true, 'Имя файла' => $conf['filename'], 'Известные колонки' => $columns)); //Xlsx::runGroups($data, function (&$gr) { // $gr['data']=array_reverse($gr['data']); // Возвращает массив с элементами в обратном порядке //}); Extend::init($data); return $data; }); }
use infrajs\excel\Xlsx; use infrajs\router\Router; use infrajs\ans\Ans; if (!is_file('vendor/autoload.php')) { chdir('../../../'); require_once 'vendor/autoload.php'; Router::init(); //Требуется автоматическая установка } $ans = array(); //Три уровня разбора данных //1 Минимум требований к структуре Excel документа, данные "как есть" $data = Xlsx::parse('vendor/infrajs/excel/test.xlsx'); if (sizeof($data) != 22) { return Ans::err($ans, 'Некорректный результат Xlsx::parse ' . sizeof($data)); } //2 Простая структура - Распознаются заголовки таблицы, описание таблицы, структура групп. Можно применять Xlsx::runPoss и Xlsx::runGroups $data = Xlsx::get('vendor/infrajs/excel/test.xlsx'); if (sizeof($data) != 7) { return Ans::err($ans, 'Некорректный результат Xlsx::get ' . sizeof($data)); } //3 Оптимизировання структура. Обязательна колонка Артикул, объединение групп. Большой список опций вторым аргументом $data = Xlsx::init('vendor/infrajs/excel/test.xlsx'); /*echo count($data); echo '<pre>'; print_r($data); exit;*/ if (sizeof($data['childs']) != 1) { return Ans::err($ans, 'Некорректный результат Xlsx::init ' . sizeof($data)); } return Ans::ret($ans);
<?php namespace infrajs\excel; use infrajs\access\Access; use infrajs\ans\Ans; use infrajs\config\Config; Access::test(true); $ans = array(); $data = Xlsx::init('-test-akiyatkin/resources/test.xlsx'); if (!$data) { return Ans::err($ans, 'Cant read test.xlsx'); } $data = Xlsx::init('-test-akiyatkin/resources/test.csv'); if (!$data) { return Ans::err($ans, 'Cant read test.csv'); } if (sizeof($data['childs']) != 1) { return Ans::err($ans, 'Cant read test.csv ' . sizeof($data['childs'])); } $num = ini_get('mbstring.func_overload'); if ($num != 0) { $ans['class'] = 'bg-warning'; return Ans::err($ans, 'mbstring.func_overload should be 0, not ' . $num); } else { $data = Xlsx::get('-test-akiyatkin/resources/test.xls'); if (sizeof($data['childs'][0]['data']) != 30) { return Ans::err($ans, 'Cant read test.xls ' . sizeof($data['childs'][0]['data'])); } } return Ans::ret($ans, 'csv, xls, xlsx read ok!');