>백엔드 개발 >PHP 튜토리얼 >PhpSpreadsheet에 대한 간단한 튜토리얼

PhpSpreadsheet에 대한 간단한 튜토리얼

藏色散人
藏色散人앞으로
2019-10-12 13:53:4015842검색

오늘 PHP와 Excel 간의 데이터 변환과 관련된 문제가 발생했습니다. 이전에 PHPExcel을 사용해 왔지만 개발팀에서 더 이상 업데이트하지 않습니다. 그런데 PhpSpreadsheet 를 발견했습니다.

1. 소개

다양한 스프레드시트 파일 형식을 읽고 쓸 수 있는 클래스 세트를 제공하는 순수 PHP로 작성된 라이브러리

지원 형식

PhpSpreadsheet에 대한 간단한 튜토리얼

환경 요구 사항

php 5.6 이상

php_zip 지원 및 활성화

php_xml 지원 및 활성화

php_gd2 지원 및 활성화

installation

> composer require phpoffice/phpspreadsheet

hello world

<?php
require &#39;vendor/autoload.php&#39;;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
$sheet->setCellValue(&#39;A1&#39;, &#39;Hello World !&#39;);
$writer = new Xlsx($spreadsheet);
$writer->save(&#39;hello world.xlsx&#39;);

예제

패키지에 포함된 예제 코드, Vendor/phpoffice/phpspreadsheet/samples

> php -S localhost:8000 -t vendor/phpoffice/phpspreadsheet/samples

에 있습니다. 2. 파일 형식 로드에 대해 걱정하지 않고

을 읽으세요. IOFactory가 사용됩니다.

// 文件路径
$inputFileName = &#39;./sampleData/example1.xls&#39;;
$spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load($inputFileName);

참고:

이것은 파일을 로드하는 가장 효율적인 방법이 아닙니다. 실제로 파일을 스프레드시트 개체로 읽기 전에 어떤 방식으로든 로더를 구성할 수 있는 유연성이 부족합니다.

파일 형식을 알면 어떤 리더를 사용할지 결정할 수 있습니다

// 文件路径
$inputFileName = &#39;./sampleData/example1.xls&#39;;
/** 创建读取器  **/
$reader = new \PhpOffice\PhpSpreadsheet\Reader\Xls();
//    $reader = new \PhpOffice\PhpSpreadsheet\Reader\Xlsx();
//    $reader = new \PhpOffice\PhpSpreadsheet\Reader\Xml();
//    $reader = new \PhpOffice\PhpSpreadsheet\Reader\Ods();
//    $reader = new \PhpOffice\PhpSpreadsheet\Reader\Slk();
//    $reader = new \PhpOffice\PhpSpreadsheet\Reader\Gnumeric();
//    $reader = new \PhpOffice\PhpSpreadsheet\Reader\Csv();
$spreadsheet = $reader->load($inputFileName);

서식을 지정하지 않고 데이터만 읽어야 하는 경우 인스턴스 리더의 readDataOnly 속성은 다음과 같습니다

$inputFileType = &#39;Xls&#39;;
$inputFileName = &#39;./sampleData/example1.xls&#39;;
$reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader($inputFileType);
/**  只要数据  **/
$reader->setReadDataOnly(true);
$spreadsheet = $reader->load($inputFileName);

참고: csv 리더에는 이 속성이 없습니다. 속성

여러 파일이 하나의 개체로 병합됨

$inputFileType = &#39;Csv&#39;;
$inputFileNames = [
    &#39;./sampleData/example1.csv&#39;,
    &#39;./sampleData/example2.csv&#39;
    &#39;./sampleData/example3.csv&#39;
];
$reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader($inputFileType);
/** 拿到第一个  **/
$inputFileName = array_shift($inputFileNames);
$spreadsheet = $reader->load($inputFileName);
$spreadsheet->getActiveSheet()
    ->setTitle(pathinfo($inputFileName,PATHINFO_BASENAME));
/**  循环读取  **/
foreach($inputFileNames as $sheet => $inputFileName) {
    /**  重新设置工作表索引  **/
    $reader->setSheetIndex($sheet+1);
    /**  把文件当做一个新的工作表载入  **/
    $reader->loadIntoExisting($inputFileName,$spreadsheet);
    /**  设置工作表标题  **/
    $spreadsheet->getActiveSheet()
        ->setTitle(pathinfo($inputFileName,PATHINFO_BASENAME));
}

참고: 여러 워크시트에 동일한 워크시트 색인을 사용하면 파일이 동일한 워크시트에 추가되지 않지만 이전에 로드된 결과를 덮어쓰게 됩니다. 동일한 워크시트에 여러 CSV 파일을 로드할 수 없습니다.

배열로 변환

파일은 마침내 스프레드시트 워크시트 개체라고 하는 개체에 로드됩니다. 이 개체는 모든 워크시트 컬렉션에 대한 정보(데이터 정보, 형식 정보, 워크시트 정보 등)를 저장합니다.

$spreadsheet = PhpOffice\PhpSpreadsheet\IOFactory::load("new.xls");
$data = $spreadsheet
            ->getSheet(0) // 指定第一个工作表为当前
            ->toArray();  // 转为数组
// 或者得到全部工作表的数据数组           
$cells=array();
// 工作表对象有迭代器实现
foreach ( $spreadsheet->getWorksheetIterator() as $data ) {
    $cells = $data->toArray();
}

결론

PhpSpreadsheet는 아주 좋은 PHP 스프레드시트 처리 도구 클래스입니다. 나중에 시간이 나면 쓰기 및 내보내기를 추가하겠습니다.

PHP 관련 지식을 더 보려면

PHP 중국어 웹사이트를 방문하세요!

위 내용은 PhpSpreadsheet에 대한 간단한 튜토리얼의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 learnku.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제