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');
说一下使用思路:
- 先 new spreadsheet( )类
- 用spreadsheet类里面的方法,获得要读的sheet页。并返回一个叫worksheet的类
- 通过worksheet()里面的方法去设置表格的内容
- 最后保存。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 从表格单元格中检索日期?