phpspreadsheet初次使用指引

Posted 酸辣柠檬粉

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了phpspreadsheet初次使用指引相关的知识,希望对你有一定的参考价值。

1.安装:

 按官网composer进行安装:

composer require phpoffice/phpspreadsheet

我是compeser到laravel的目录下 

在cmd中进入laravel的目录地址,键入上面的指令  它会默认安装在vendor目录下

安装后地址:verdor\\phpoffice\\phpspreadsheet

2.看示例:

按照官网示例:

<?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');

说一下使用思路:

  1. 先 new spreadsheet( )类
  2. 用spreadsheet类里面的方法,获得要读的sheet页。并返回一个叫worksheet的类
  3. 通过worksheet()里面的方法去设置表格的内容
  4. 最后保存。eg:xlsx格式   new xlsx()的类  然后执行save(‘filename’)

3.个人解读:

     命名空间:引入spreadsheet类和writer\\xlsx类的地址

     3.1  new  SpreadSheet类【个人理解(可能有出入)是:SpreadSheet 类是操作sheet页的】

      比如说 :

       一个excel可能有多个页面(sheet1,sheet2,sheet3),要使用哪个页面可以使用

      getSheet(index)--通过索引获取

      getsheetByName(name)--通过名字获取

      getActiveSheet() --直接获取当前激活的sheet

      请注意它的这些函数返回值(具体返回数据类型见官方文档)

int            getActiveSheetIndex()
               Get active sheet index.

Worksheet      setActiveSheetIndex(int $pIndex)
               Set active sheet index.

上面这里: 一个int型 一个worksheet型 

int型就是整型,不多说

worksheet按我的理解是一个类

Worksheet
class Worksheet implements IComparable (View source)

这个类返回后就可以链式操作它的方法了

这个类在官方文档https://phpoffice.github.io/PhpSpreadsheet/master/PhpOffice/PhpSpreadsheet/Worksheet/Worksheet.html

目录结构:phpoffice\\phpspreadsheet\\worksheet\\worksheet

3.2  worksheet类   个人理解(可能理解不透彻)

    【 操作单元格的】--例如读写表格数据

你可以使用

    setCellValue('A1', 'Hello World !'); ---设置A1单元格的数据为helloworld

    setCellValueByColumnAndRow(1,1,"姓名") ---设置A1单元格数据为“姓名”,参数1:列编号;参数2:行编号;参数3:值

    getStyle(string $pCellCoordinate)  --通过坐标获取样式,它返回的数据是style类,这样就可以通过style类去操作这个单元格的样式

同样的:方法返回的如果是某个类,你就可以继续链式操作这个类的方法

3.3  保存数据

可以使用的格式很多如pdf,csv,xls,xlsx

见:https://phpoffice.github.io/PhpSpreadsheet/master/PhpOffice/PhpSpreadsheet/Writer.html

你需要写对应的命名空间

例如:use PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx;

就是保存xlsx格式

使用时new xlsx()类

然后使用save()方法

save(string $pFilename)
Save PhpSpreadsheet to file.

4.完结:

 最终代码如下:

<?php

namespace App\\Http\\Controllers;

use Illuminate\\Http\\Request;
use PhpOffice\\PhpSpreadsheet\\Spreadsheet;
use PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx;
use PhpOffice\\PhpSpreadsheet\\Cell\\Cell;

class testController extends Controller

    public function excelwrite()
        $data = array(
            array('张三','1(1)班'),
            array('李四','1(2)班'),
            array('王五','1(3)班')
        );
        $spreadsheet = new Spreadsheet();
        $worksheet = $spreadsheet ->getActiveSheet();
        $worksheet ->setCellValueByColumnAndRow(1,1,"姓名");//设置第1行第1列为姓名
        $worksheet ->setCellValueByColumnAndRow(2,1,"班级");//设置第1行第2列为班级
        foreach($data as $key =>$val)
            foreach($val as $k=>$v)
                $worksheet->setCellValueByColumnAndRow($k+1,$key+2,$v);//循环输入具体的数据
            
        
        $worksheet->setTitle('test1');//设置sheet页面名称
        $writen = new Xlsx($spreadsheet);
        $writen->save('test1.xlsx');//保存为xlsx格式文件
        /**
         *下载excel
        **/
        //header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
        //header('Content-Disposition: attachment;filename="信息表.xlsx"'); 
        //header('Cache-Control: max-age=0');

        //$write->save('php://output');
    

表格显示:

test1.xlsx表 

姓名班级
张三1(1)班
李四1(2)班
王五1(3)班

 

/**
 * excel读操作
**/    
public function excelRead()
        $reader = new Xlsx();
        $spreadsheet = $reader->load('test1.xlsx');
        $worksheet = $spreadsheet->getActiveSheet();
        $arr = $worksheet->getHighestRowAndColumn();//
        $column = $worksheet ->getHighestColumn();//获取最高列,它这里是字母,比如F
        $row = $worksheet ->getHighestRow();//获取最后行
        $cellName = Coordinate::columnIndexFromString($column);//将列的字母转换成数字
        echo $cellName;
        echo $row;
        dump($arr);
        /**
         * 剩下使用循环读取
         * $value = $worksheet->getCellByColumnAndRow($col, $row)->getValue();
         * 后续有时间再补充完整
        */
    

 

以上是关于phpspreadsheet初次使用指引的主要内容,如果未能解决你的问题,请参考以下文章

如何在 PhpSpreadSheet 中设置货币格式?

如何使用 PhpSpreadsheet 从表格单元格中检索日期?

php读写excel —— PhpSpreadsheet组件

phpspreadsheet开发手记

PhpSpreadsheet中文false

PHPExcel 和 PhpSpreadsheet 之间的主要区别是啥?