百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>网页制作> 对于 PhpSpreadsheet 简略教程
分享文章到:

对于 PhpSpreadsheet 简略教程

发布时间:09/01 来源:未知 浏览: 关键词:
今天碰到一个问题,触及 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相关知识,请拜访PHP中文网!

以上就是关于 PhpSpreadsheet 简便教程的具体内容,更多请关注百分百源码网其它相关文章!

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有150人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板