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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java inputstream和outputstream_string java

    java inputstream和outputstream_string javaInputStream读取流有三个方法,分别为read(),read(byte[]b),read(byte[]b,intoff,intlen)。其中read()方法是一次读取一个字节,效率是非常低的。所以最好是使用后面两个方法。/***读取流**@paraminStream*@return字节数组*@throwsException*/publicstaticbyte[…

    2022年9月15日
    3
  • webstorm2021 激活码 online【2021免费激活】

    (webstorm2021 激活码 online)本文适用于JetBrains家族所有ide,包括IntelliJidea,phpstorm,webstorm,pycharm,datagrip等。https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~1…

    2022年3月27日
    78
  • JAVA代码—最简单的九九乘法表

    JAVA代码—最简单的九九乘法表JAVA代码—最简单的九九乘法表packagetest;publicclassMain{ publicstaticvoidmain(String[]args)throwsException{ for(inti=1;i&lt;10;i++){ for(intj=1;j&lt;=i;j++){ …

    2022年7月9日
    16
  • APP弱网测试[通俗易懂]

    APP弱网测试[通俗易懂]APP弱网测试 一、网络测试的一般流程step1:首先要考虑网络正常的情况① 各个模块的功能正常可用② 页面元素/数据显示正常step2:其次要考虑无网络的情况① APP各个功能在无网络情况下是否可用② APP各个页面之间切换是否正常③ 发送网络请求时是否会导致闪退、卡死等异常情况④ APP各个页面是否显示完整美观,未刷新的页…

    2022年4月19日
    35
  • 指令重排详解_cpu指令重排序

    指令重排详解_cpu指令重排序指令重排:编译器指令重排,cpu指令重排,内存指令重排。编译器可能会调整顺序,如下图,左边是c++源码,右边是优化后顺序一条汇编指令的执行是可以分为很多步骤的,分为不同的硬件执行取指IF译码和取寄存器操作数ID执行或者有效地址计算EX(ALU逻辑计算单元)存储器访问MEM写回WB(寄存器)指令重排只可能发生在毫无关系的指令之间,如果指令之间存在依赖关系,则不会重排。单线程内程序的执行结果不能被改变。1原子性是指一个操作是不可中断的.

    2022年10月17日
    2
  • JSONObject中Java对象转换成Json格式的两种方式

    JSONObject中Java对象转换成Json格式的两种方式1、alibaba的JSONObject对象调用toJSONString方法直接转换pom.xml依赖:<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.41</…

    2022年6月1日
    39

发表回复

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

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