This commit is contained in:
salam committed 2026-10-01 15:10:40 +02:00
1 parent 78db21c71c
commit e1f3b728a9
9 files changed
+252 -203

No files matched your search

+63 -52
View File
@@ -19,66 +19,77 @@ trait GrappingToExcel
ini_set('memory_limit', -1);
if ($this->debug) {
Notice::note("Import to Excel", 'bb');
Notice::note("Import $folder to Excel", 'bb');
}
$directories = File::directories($this->data_dir . '/' . $folder);
foreach ($directories as $directory) {
$day = substr(strrchr($directory, "/"), 1);
$this->titel = ucfirst($folder) . '-' . $day;
$files = $this->get_tree($directory);
// only json max 2000
$files = array_chunk($this->filter($files), $this->max);
foreach ($files as $key => $value) {
$has = count($value);
if (! $key && $has < $this->max) {
$count_from = 1;
$count_to = $has;
} elseif (! $key) {
$count_from = 1;
$key++;
$count_to = $key * $this->max;
} elseif ($has == $this->max) {
$count_from = $key * $this->max + 1;
$key++;
$count_to = $key * $this->max;
} else {
$count_from = $key * $this->max + 1;
$count_to = $key * $this->max + $has;
switch ($folder) {
case 'daily':
$directories = File::directories($this->data_dir);
foreach ($directories as $directory) {
$day = substr(strrchr($directory, "/"), 1);
$this->titel = ucfirst($folder) . '-' . $day;
$this->make_file($this->data_dir . '/' . $day);
}
break;
$spreadsheet = new Spreadsheet;
$spreadsheet->getProperties()->setTitle($this->titel . '-' . $count_from . '-' . $count_to);
$activeWorksheet = $spreadsheet->getActiveSheet();
case 'range':
$task = SofaScoreTask::with('sport')->where('id', 3)->first();
$this->titel = ucfirst($folder) . '-' . $this->clean_string($task->name);
$this->make_file($this->data_dir);
break;
}
}
$column = 1;
foreach ($value as $file) {
$data = file_get_contents($file);
$data = json_decode($data, true);
$json_string = json_encode($data, JSON_PRETTY_PRINT);
protected function make_file(string $directory)
{
$files = $this->get_tree($directory);
$arr = explode(PHP_EOL, $json_string);
$row = 0;
foreach ($arr as $string) {
$row++;
$replacedString = preg_replace('/\\\\u([0-9abcdef]{4})/', '&#x$1;', $string);
$utf8string = mb_convert_encoding($replacedString, 'UTF-8', 'HTML-ENTITIES');
$activeWorksheet->setCellValue([$column, $row], $utf8string);
}
$column++;
}
// only json max 2000
$files = array_chunk($this->filter($files), $this->max);
$spreadsheet->setActiveSheetIndex(0);
$writer = IOFactory::createWriter($spreadsheet, 'Xlsx');
$writer->save("$this->data_dir/$this->titel-$count_from-$count_to.xlsx");
foreach ($files as $key => $value) {
$has = count($value);
if (! $key && $has < $this->max) {
$count_from = 1;
$count_to = $has;
} elseif (! $key) {
$count_from = 1;
$key++;
$count_to = $key * $this->max;
} elseif ($has == $this->max) {
$count_from = $key * $this->max + 1;
$key++;
$count_to = $key * $this->max;
} else {
$count_from = $key * $this->max + 1;
$count_to = $key * $this->max + $has;
}
$spreadsheet = new Spreadsheet;
$spreadsheet->getProperties()->setTitle($this->titel . '-' . $count_from . '-' . $count_to);
$activeWorksheet = $spreadsheet->getActiveSheet();
$column = 1;
foreach ($value as $file) {
$data = file_get_contents($file);
$data = json_decode($data, true);
$json_string = json_encode($data, JSON_PRETTY_PRINT);
$arr = explode(PHP_EOL, $json_string);
$row = 0;
foreach ($arr as $string) {
$row++;
$replacedString = preg_replace('/\\\\u([0-9abcdef]{4})/', '&#x$1;', $string);
$utf8string = mb_convert_encoding($replacedString, 'UTF-8', 'HTML-ENTITIES');
$activeWorksheet->setCellValue([$column, $row], $utf8string);
}
$column++;
}
$spreadsheet->setActiveSheetIndex(0);
$writer = IOFactory::createWriter($spreadsheet, 'Xlsx');
$writer->save("$this->data_dir/$this->titel-$count_from-$count_to.xlsx");
}
}