关于 PhpSpreadsheet 简单教程-php教程

资源魔 33 0
明天遇到一个成绩,触及 php 与 excel 之间数据转换。以前不断用 PHPExcel,他们的开发组没有更新了。然而找到了 PhpSpreadsheet 。

1、引见

用纯 php 编写的库,它提供了一组类,容许您读取以及写入没有同的电子表格文件格局

支持格局

89e1b234114930a4f759eadb1f2eb89.png

环境要求

php 5.6 及以上

php_zip 支持并启用

php_xml 支持并启用

php_gd2 支持并启用

装置

> composer require phpoffice/phpspreadsheet

hello world

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

实例

包中带了实例代码,地位 vendor/phpoffice/phpspreadsheet/samples 下

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

2、读取

无需关怀文件类型加载,用到了 IOFactory

// 文件门路
$inputFileName = './sampleData/example1.xls';
$spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load($inputFileName);

留意:

这没有是加载文件的最无效办法, 而且它缺乏正在将文件实际读入 Spreadsheet 工具以前以任何形式设置装备摆设加载器的灵敏性。

晓得文件类型,能够本人决议应用哪一种读取器

// 文件门路
$inputFileName = './sampleData/example1.xls';
/** 创立读取器  **/
$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 = 'Xls';
$inputFileName = './sampleData/example1.xls';
$reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader($inputFileType);
/**  只需数据  **/
$reader->setReadDataOnly(true);
$spreadsheet = $reader->load($inputFileName);

留意:csv 读取器不这个属性

多个文件兼并为一个工具

$inputFileType = 'Csv';
$inputFileNames = [
    './sampleData/example1.csv',
    './sampleData/example2.csv'
    './sampleData/example3.csv'
];
$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 工作表工具,这个工具中寄存着以是工作表荟萃的信息(数据信息以及格局信息、工作表信息等)

$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开发教程 php开发资料 php开发自学 PhpSpreadsheet

抱歉,评论功能暂时关闭!