phpspreadsheet中文手册_php file_put_contents

phpspreadsheet中文手册_php file_put_contents今天遇到一个问题,涉及php与excel之间数据转换。之前一直用PHPExcel,他们的开发组不更新了。但是找到了PhpSpreadsheet。一、介绍用纯php编写的库,它提供了一组类,允许您读取和写入不同的电子表格文件格式支持格式环境要求php5.6及以上php_zip支持并启用php_xml支持并启用php_gd2支持并启用安装>composerrequi…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

今天遇到一个问题,涉及 php 与 excel 之间数据转换。之前一直用 PHPExcel,他们的开发组不更新了。但是找到了 PhpSpreadsheet。

一、介绍

用纯 php 编写的库,它提供了一组类,允许您读取和写入不同的电子表格文件格式

支持格式

45fd52bd067e5cf93fab1f78019f8bbf.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中文网!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/192512.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号