use Cubist\Backpack\Magic\Fields\Code;
use Cubist\Backpack\Magic\Fields\Text;
use Cubist\Backpack\Magic\Form;
+use Cubist\Excel\Excel;
use Cubist\Util\Files\Files;
use Cubist\Util\Str;
-use PhpOffice\PhpSpreadsheet\Spreadsheet;
-use PhpOffice\PhpSpreadsheet\Style\Alignment;
-use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
+use PhpOffice\PhpSpreadsheet\Exception;
+use Psr\Container\ContainerExceptionInterface;
+use Psr\Container\NotFoundExceptionInterface;
trait JSON2Excel
{
$form->setTitle(__('Convertir du JSON en excel'));
$form->setSubmitLabel(__('Convertir'));
$form->setSubmitIcon('la la-file-excel');
- $form->addField('name', Text::class, __('Nom du fichier'), ['placeholder' => 'json', 'suffix' => '.xlsx']);
+ $form->addField('filename', Text::class, __('Nom du fichier'), ['placeholder' => 'json', 'suffix' => '.xlsx']);
$form->addField('json', Code::class, __('Contenu JSON'), ['language' => 'js']);
return view('tools.form', ['form' => $form]);
}
+ /**
+ * @throws NotFoundExceptionInterface
+ * @throws ContainerExceptionInterface
+ * @throws Exception
+ */
public function dojson2excel()
{
$json = request()->get('json');
- $name = request()->get('name', 'json');
+ $name = request()->get('filename', 'json');
$safename = Str::slug($name);
$data = json_decode($json, true);
$first = true;
}
$tmpfile = Files::tempnam() . '.xlsx';
-
- $spreadsheet = new Spreadsheet();
- $sheet = $spreadsheet->getActiveSheet();
- $sheet->setTitle($name);
- $sheet->fromArray($excelData);
-
- $highest = $sheet->getHighestRowAndColumn();
- $sheet->getStyle('A1:' . $highest['column'] . '1')->applyFromArray(['font' => ['bold' => true,]]);
-
- foreach ($sheet->getColumnIterator() as $column) {
- $sheet->getColumnDimension($column->getColumnIndex())->setAutoSize(true);
- }
- $sheet->getStyle('A1:' . $highest['column'] . $highest['row'])->getAlignment()->setHorizontal(Alignment::HORIZONTAL_LEFT);
-
- $writer = new Xlsx($spreadsheet);
- $writer->save($tmpfile);
+ Excel::fromArray($name, $excelData, null, $tmpfile);
return response()->download($tmpfile, $safename . '.xlsx')->deleteFileAfterSend(true);
"source": {
"type": "git",
"url": "git://git.cubedesigners.com/cubist_excel.git",
- "reference": "f5d72b0bbf09fd9d0037ea107839946ac77997e4"
+ "reference": "b6f1ddf50862ffef4dfaf50836d5bfad02a66152"
},
"dist": {
"type": "tar",
- "url": "https://composer.cubedesigners.com/dist/cubist/excel/cubist-excel-dev-master-421b6a.tar",
- "reference": "f5d72b0bbf09fd9d0037ea107839946ac77997e4",
- "shasum": "d33eed52497f10dab39a583e2f4ed44d66fe646f"
+ "url": "https://composer.cubedesigners.com/dist/cubist/excel/cubist-excel-dev-master-f2dc61.tar",
+ "reference": "b6f1ddf50862ffef4dfaf50836d5bfad02a66152",
+ "shasum": "71e74b43b9740684f4a4bf3cdb151216223fee1d"
},
"require": {
"cubist/util": "dev-master",
}
],
"description": "Excel files manipulation",
- "time": "2022-08-24T11:02:03+00:00"
+ "time": "2022-08-24T11:32:02+00:00"
},
{
"name": "cubist/gtag",
"source": {
"type": "git",
"url": "git://git.cubedesigners.com/cubist_util.git",
- "reference": "787856a609e73933d86be1bfd65c106b93d01805"
+ "reference": "5d9c2dbf534fb8fa447c9d73c267768107e4433a"
},
"dist": {
"type": "tar",
- "url": "https://composer.cubedesigners.com/dist/cubist/util/cubist-util-dev-master-805791.tar",
- "reference": "787856a609e73933d86be1bfd65c106b93d01805",
- "shasum": "f00eeb374afc43252615e6ec33c173fd97d694f7"
+ "url": "https://composer.cubedesigners.com/dist/cubist/util/cubist-util-dev-master-5981df.tar",
+ "reference": "5d9c2dbf534fb8fa447c9d73c267768107e4433a",
+ "shasum": "66115893dfef15fe1e08d8632de2200fa3b88c04"
},
"require": {
"cubist/net": "dev-master",
}
],
"description": "Utilities class",
- "time": "2022-08-24T08:49:41+00:00"
+ "time": "2022-08-24T09:39:22+00:00"
},
{
"name": "cviebrock/eloquent-sluggable",
@if (!isset($seenFluidbookChapters))
-@php $seenFluidbookChapters=true;@endphp
-@push('crud_fields_scripts')
-<script>
- $(function () {
- $(document).trigger('fluidbook_chapters.level.change');
- $(document).on('click', '.chaptersExportExcel', function () {
- var json = $(this).closest('.bunchmultiple[data-values]').find('.hiddenfield').eq(0).val();
- var form = $('<form action="{{backpack_url('
- tools / dojson2excel
- ')}}" method="post">' +
- '<input type="hidden" name="json" value="" />' +
- '<input type="hidden" name="name" value="" />' +
- '<input type="hidden" name="_token" value="{{csrf_token()}}" />' +
- '</form>'
- )
- ;
- $('body').append(form);
- $(form).find('input[name="json"]').val(json);
- $(form).find('input[name="name"]').val('chapters_' + $('input[name="id"]').val());
- form.submit();
- return false;
- });
- $(document).on('click', '.chaptersImportExcel', function () {
- var form = $('<form style="opacity:0;position:absolute;top:0;left:0;" action="{{backpack_url('
- opentools / doexcel2json
- ')}}" enctype="multipart/form-data" method="post">' +
- '<input type="file" name="file" value="" accept=".xlsx" />' +
- '<input type="hidden" name="dataorg" value="excelToArrayKeyVars" />' +
- '<input type="hidden" name="format" value="json" />' +
- '<input type="hidden" name="_token" value="{{csrf_token()}}" />' +
- '</form>'
- )
- ;
- $('body').append(form);
- var file = $(form).find('input[type="file"]');
- $(file).on('change', function () {
- $(form).ajaxSubmit({
- success: function (data) {
- var bm = $('[data-bunch-name="{{$field['
- name
- ']}}"]'
- ).
- data('bunchmultiple');
- bm.replaceData(data[0].data);
- }
+ @php $seenFluidbookChapters=true;@endphp
+ @push('crud_fields_scripts')
+ <script>
+ $(function () {
+ $(document).trigger('fluidbook_chapters.level.change');
+ $(document).on('click', '.chaptersExportExcel', function () {
+ var json = $(this).closest('.bunchmultiple[data-values]').find('.hiddenfield').eq(0).val();
+ var form = $('<form action="{{backpack_url('tools/dojson2excel')}}" method="post">' +
+ '<input type="hidden" name="json" value="" />' +
+ '<input type="hidden" name="filename" value="" />' +
+ '<input type="hidden" name="_token" value="{{csrf_token()}}" />' +
+ '</form>'
+ )
+ ;
+ $('body').append(form);
+ $(form).find('input[name="json"]').val(json);
+ $(form).find('input[name="name"]').val('chapters_' + $('input[name="id"]').val());
+ form.submit();
+ return false;
+ });
+ $(document).on('click', '.chaptersImportExcel', function () {
+ var form = $('<form style="opacity:0;position:absolute;top:0;left:0;" action="{{backpack_url('opentools/doexcel2json')}}" enctype="multipart/form-data" method="post">' +
+ '<input type="file" name="file" value="" accept=".xlsx" />' +
+ '<input type="hidden" name="dataorg" value="excelToArrayKeyVars" />' +
+ '<input type="hidden" name="format" value="json" />' +
+ '<input type="hidden" name="_token" value="{{csrf_token()}}" />' +
+ '</form>'
+ )
+ ;
+ $('body').append(form);
+ var file = $(form).find('input[type="file"]');
+ $(file).on('change', function () {
+ $(form).ajaxSubmit({
+ success: function (data) {
+ var bm = $('[data-bunch-name="{{$field['name']}}"]').data('bunchmultiple');
+ bm.replaceData(data[0].data);
+ }
+ });
+ });
+ file.trigger('click');
+ return false;
});
});
- file.trigger('click');
- return false;
- });
- });
-</script>
-@endpush
+ </script>
+ @endpush
-@push('crud_fields_styles')
-<style>
- .bunchmultiple.bunchmultiple_oneline .bunchmultiple__wrapper .legendsize .form-group {
- padding: 0 2px !important;
- }
+ @push('crud_fields_styles')
+ <style>
+ .bunchmultiple.bunchmultiple_oneline .bunchmultiple__wrapper .legendsize .form-group {
+ padding: 0 2px !important;
+ }
- .bunchmultiple_oneline .bunchmultiple__wrapper .item .legend .legendsize .form-group[data-name="label"] {
- width: calc(100% - 360px);
- }
+ .bunchmultiple_oneline .bunchmultiple__wrapper .item .legend .legendsize .form-group[data-name="label"] {
+ width: calc(100% - 360px);
+ }
- .bunchmultiple_oneline .bunchmultiple__wrapper .item .legend .legendsize .form-group[data-name="page"] {
- width: 100px;
- }
+ .bunchmultiple_oneline .bunchmultiple__wrapper .item .legend .legendsize .form-group[data-name="page"] {
+ width: 100px;
+ }
- .bunchmultiple_oneline .bunchmultiple__wrapper .item .legend .legendsize .form-group[data-name="color"] {
- width: 54px;
- }
+ .bunchmultiple_oneline .bunchmultiple__wrapper .item .legend .legendsize .form-group[data-name="color"] {
+ width: 54px;
+ }
- .bunchmultiple_oneline .bunchmultiple__wrapper .item .legend .legendsize .form-group[data-name="decoration"] {
- width: 160px;
- }
-</style>
-@endpush
+ .bunchmultiple_oneline .bunchmultiple__wrapper .item .legend .legendsize .form-group[data-name="decoration"] {
+ width: 160px;
+ }
+ </style>
+ @endpush
@endif
@php
-$additionalButtons='<a href="#" class="btn btn-sm btn-secondary chaptersImportExcel"><i class="la la-file-excel"></i>
- '.__('Remplacer par le contenu d\'un fichier excel').'</a>';
-$additionalButtons.='<a href="#" class="btn btn-sm btn-success chaptersExportExcel"><i class="la la-file-excel"></i>
- '.__('Exporter au format excel').'</a>';
+ $additionalButtons='<a href="#" class="btn btn-sm btn-secondary chaptersImportExcel"><i class="la la-file-excel"></i>
+ '.__('Remplacer par le contenu d\'un fichier excel').'</a>';
+ $additionalButtons.='<a href="#" class="btn btn-sm btn-success chaptersExportExcel"><i class="la la-file-excel"></i>
+ '.__('Exporter au format excel').'</a>';
@endphp
@include('cubist_back::fields.bunch_oneline_multiple')
@php
-$additionalButtons='';
+ $additionalButtons='';
@endphp