[php] PhpSpreadsheet을 사용하여 데이터 필터링

PhpSpreadsheet은 PHP로 Excel 파일을 생성, 편집 및 읽기를 지원하는 라이브러리입니다. 이 라이브러리를 사용하면 PHP로 Excel 파일에서 데이터를 필터링할 수 있습니다. 데이터 필터링은 Excel 파일에서 특정 조건을 충족하는 행만 필터링하여 골라내는 과정을 의미합니다.

이번에는 PhpSpreadsheet을 사용하여 Excel 파일에서 데이터를 필터링하는 방법에 대해 알아보겠습니다.

1. Excel 파일에서 데이터 읽기

먼저, PhpSpreadsheet을 사용하여 Excel 파일에서 데이터를 읽는 방법에 대해 알아보겠습니다. 아래의 PHP 코드를 이용하여 Excel 파일을 불러올 수 있습니다:

require 'vendor/autoload.php';

use PhpOffice\PhpSpreadsheet\IOFactory;

$spreadsheet = IOFactory::load('example.xlsx');
$worksheet = $spreadsheet->getActiveSheet();

// 이곳에서 데이터를 읽고 필터링을 진행합니다.

2. 데이터 필터링

불러온 Excel 파일에서 데이터를 필터링하기 위해서는 원하는 조건을 지정하여 데이터를 검사하고 출력해야 합니다. 아래의 예제는 PhpSpreadsheet을 사용하여 특정 조건을 충족하는 데이터를 필터링하는 방법을 보여줍니다:

$filter = new \PhpOffice\PhpSpreadsheet\Filter\Filter('A', 'equals', 'Apple');
$conditionalStyles = new \PhpOffice\PhpSpreadsheet\Style\Conditional();
$conditionalStyles->setConditionType(\PhpOffice\PhpSpreadsheet\Style\Conditional::CONDITION_CELLIS)
    ->setOperatorType(\PhpOffice\PhpSpreadsheet\Style\Conditional::OPERATOR_LESSTHAN)
    ->setFirstCondition('10')
    ->getStyle()
    ->getFill()
    ->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)
    ->getStartColor()
    ->setARGB(\PhpOffice\PhpSpreadsheet\Style\Color::COLOR_RED);

$worksheet->setAutoFilter('A1:C10');
$worksheet->setAutoFilter('A1');

/** apply a filter to a range to do the filtering */
$range = 'A1:C10';
$filter = $worksheet->getAutoFilter()->getColumn('A')->createTextFilter('Apple');
$filter = $worksheet->getAutoFilter()->getColumn('B')->createRule()
    ->setRule(\PhpOffice\PhpSpreadsheet\Worksheet\AutoFilter\Column::AUTOFILTER_COLUMN_RULE_EQUAL, 'Banana');
$filter = $worksheet->getAutoFilter()->getColumn('B')->createRule()
    ->setRule(\PhpOffice\PhpSpreadsheet\Worksheet\AutoFilter\Column::AUTOFILTER_COLUMN_RULE_NOTEQUAL, 'Apple');
$filter = $worksheet->getAutoFilter()->getColumn('A')->createRule()
    ->setRule(\PhpOffice\PhpSpreadsheet\Worksheet\AutoFilter\Column::AUTOFILTER_COLUMN_RULE_EQUAL, 'Apple');

$conditionalStyles = new \PhpOffice\PhpSpreadsheet\Style\Conditional();
$conditionalStyles->setConditionType(\PhpOffice\PhpSpreadsheet\Style\Conditional::CONDITION_CELLIS)
    ->setOperatorType(\PhpOffice\PhpSpreadsheet\Style\Conditional::OPERATOR_LESSTHAN)
    ->setFirstCondition('10')
    ->getStyle()
    ->getFill()
    ->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)
    ->getStartColor()
    ->setARGB(\PhpOffice\PhpSpreadsheet\Style\Color::COLOR_RED);

위의 코드는 Excel 파일에서 ‘A’ 열 값이 ‘Apple’이거나 ‘B’ 열 값이 ‘Banana’이 아닌 데이터를 필터링하고, 조건에 따라 셀의 색을 변경하는 예제입니다.

요약

PhpSpreadsheet을 사용하여 Excel 파일에서 데이터를 필터링하는 방법에 대해 알아보았습니다. 이를 통해 PHP로 Excel 파일을 다룰 때 데이터를 효율적으로 처리할 수 있게 되었습니다.

더 자세한 내용은 PhpSpreadsheet 공식 문서를 참고하시기 바랍니다.