[php] PhpSpreadsheet을 사용하여 데이터 정렬

PhpSpreadsheet은 PHP로 엑셀 파일을 다루기 위한 라이브러리입니다. 이 라이브러리를 사용하여 데이터를 읽고, 쓰고, 조작할 수 있습니다. 데이터를 읽어서 정렬하는 것은 일반적인 작업입니다. 이번 포스트에서는 PhpSpreadsheet을 사용하여 데이터를 정렬하는 방법을 알아보겠습니다.

데이터 읽기

먼저, PhpSpreadsheet을 사용하여 엑셀 파일을 읽어야 합니다. 다음은 간단한 예제 코드입니다.

<?php
require 'vendor/autoload.php';

use PhpOffice\PhpSpreadsheet\IOFactory;

$spreadsheet = IOFactory::load('example.xlsx');
$sheet = $spreadsheet->getSheet(0);
$data = $sheet->toArray();

위 코드는 example.xlsx 파일을 읽고, 첫 번째 시트의 데이터를 배열로 변환하여 $data 변수에 저장합니다.

데이터 정렬

이제 데이터를 정렬해보겠습니다. PhpSpreadsheet을 사용하여 데이터를 정렬하는 방법은 간단합니다. sort() 메서드를 사용하여 원하는 방식으로 데이터를 정렬할 수 있습니다. 다음은 날짜를 기준으로 데이터를 정렬하는 예제 코드입니다.

<?php
usort($data, function($a, $b) {
    return strtotime($a['date']) - strtotime($b['date']);
});

위 예제 코드에서는 $data 배열을 usort() 함수를 사용하여 ‘date’ 필드를 기준으로 정렬합니다.

정렬된 데이터 쓰기

마지막으로, 정렬된 데이터를 다시 엑셀 파일로 쓸 수 있습니다. 다음은 정렬된 데이터를 엑셀 파일로 쓰는 예제 코드입니다.

<?php
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;

$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();

foreach ($data as $row => $rowData) {
    $col = 1;
    foreach ($rowData as $cellData) {
        $sheet->setCellValueByColumnAndRow($col, $row+1, $cellData);
        $col++;
    }
}

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

위 예제 코드는 정렬된 데이터를 새로운 엑셀 파일로 쓰는 과정을 보여줍니다.

이제 PhpSpreadsheet을 사용하여 데이터를 읽고, 정렬하고, 다시 쓰는 방법에 대해 알아보았습니다. 이를 응용하여 다양한 기능을 구현할 수 있을 것입니다.

더 많은 PhpSpreadsheet의 기능과 옵션에 대해서는 PhpSpreadsheet 공식 문서를 참고하세요.

Happy coding!