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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • LSTM(长短期记忆网络)及其tensorflow代码应用

    LSTM(长短期记忆网络)及其tensorflow代码应用

    2021年11月20日
  • ExecuteNonQuery()_sql存储过程返回值

    ExecuteNonQuery()_sql存储过程返回值本文实例讲述了C#中ExecuteNonQuery()返回值注意点。对于C#数据库程序设计有一定的借鉴价值。分享给大家供大家参考之用。具体分析如下:首先,在查询某个表中是否有数据的时候,我们通常用ExecuteNonQuery(),并通过判断值是否大于0来判断数据的存在与否。结果与我所设想的很不一致,调试时才发现,其执行后返回的结果是-1,对此我很是不理解,回头查了下资料,如下显示:SqlComm…

  • Nhibernate_juan benet

    Nhibernate_juan benet什么是NHibernate?NHibernate是一个基于.Net,用于关系数据库的对象持久化类库.它是著名的Hibernate的.Net版本.NHibernate用于把你的.Net对象持久化到底层的关系数据库中.你完全不用自己编写Sql语句去操作这些对象,NH会代替你做.你的代码里面只需要关心这些对象,NH生成sql语句并能为你取到正确的东西.开发过程HNibernate将会有一些工具帮助你,如

    2022年10月29日
  • Linux磁盘简介「建议收藏」

    Linux磁盘简介「建议收藏」转载请标明出处:http://blog.csdn.net/forezp/article/details/94174577本文出自方志朋的博客个人博客纯净版:https://www.fangzhipeng.com/db/2019/09/10/linux-disc.html本文主要从以下几个方面介绍Linux磁盘:磁盘的接口硬盘的设备名称文件系统RAID独立冗余磁盘阵列磁盘…

  • csleep函数_sleep函数如何停止

    csleep函数_sleep函数如何停止C++Sleep函数。Sleep函数的S是大写!!!!今天,我们来讲一下C++中的Sleep函数,它的作用是让程序暂停一会。

    2022年10月30日
  • ACdream 1427 Nice Sequence

    ACdream 1427 Nice Sequence

发表回复

您的电子邮箱地址不会被公开。

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