教程集 www.jiaochengji.com
教程集 >  脚本编程  >  php  >  正文 关于 PhpSpreadsheet 简单教程

关于 PhpSpreadsheet 简单教程

发布时间:2020-11-03   编辑:jiaochengji.com
教程集为您提供关于 PhpSpreadsheet 简单教程等资源,欢迎您收藏本站,我们将为您提供最新的关于 PhpSpreadsheet 简单教程资源
今天遇到一个问题,涉及 php 与 excel 之间数据转换。之前一直用 PHPExcel,他们的开发组不更新了。但是找到了 PhpSpreadsheet 。

一、介绍

用纯 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

二、读取

无需关心文件类型加载,用到了 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相关知识,请访问教程集!

以上就是关于 PhpSpreadsheet 简单教程的详细内容,更多请关注教程集其它相关文章!

  • 本文转载于:learnku,如有侵犯,请联系jquerycn@qq.com删除
  • 您可能感兴趣的文章:
    关于 PhpSpreadsheet 简单教程
    利用php实现读取excel中的图片
    【PHP】利用phpspreadsheet将数据输出到Excel文件
    PHP如何读取Excel内的图片(附代码)
    PHP如何切割excel大文件(附完整代码)
    PHP高性能Excel扩展1.2.8发布,文件读取数据类型可控!
    Golang从零开始构建简单的全文搜索引擎(译)
    php比java简单吗
    php和js哪个简单一点
    h5和php哪个简单

    [关闭]
    ~ ~