tinymeng / spreadsheet
php-spreadsheet Excel快速使用
v2.0.3
2024-07-17 06:03 UTC
Requires
- php: >=7.0.0
- phpoffice/phpspreadsheet: ^1.22.0
- tinymeng/tools: ^1.1.0
README
欢迎 Star,欢迎 PR!
大家如果有问题要交流,就发在这里吧: Spreadsheet 交流 或发邮件 666@majiameng.com
PHP Spreadsheet Class
基于 phpoffice/phpspreadsheet
扩展快速封装使用,避免我们再重复性的造轮子
您可以在网站上找到tinymeng/spreadsheet文档。查看“入门”页面以获取快速概述。
Installation
composer require tinymeng/spreadsheet -vvv
类库使用的命名空间为
\\tinymeng\\spreadsheet
目录结构
.
├── config 配置文件目录
│ └── TSpreadSheet.php
├── example 事例代码
│ ├── export.php 导出事例代码
│ └── import.php 导入事例代码
├── src 代码源文件目录
│ ├── Connector
│ │ ├── Gateway.php 必须继承的抽象类
│ │ └── GatewayInterface.php 必须实现的接口
│ ├── Gateways
│ │ ├── Export.php 导出实例
│ │ └── Import.php 导入实例
│ ├── Util
│ │ └── TConfig.php 配置类
│ └── TSpreadSheet.php 抽象实例类
├── composer.json Composer File
├── LICENSE MIT License
├── README_zh_cn.md 中文文档
└── README.md Documentation
Configuration
- 2.1 excel导出 TSpreadSheet::export()
- 2.2 excel导入 TSpreadSheet::import()
2.1.excel导出
example 事例目录
<?php use tinymeng\spreadsheet\TSpreadSheet; require __DIR__.'/vendor/autoload.php'; /** * excel生成文件名 */ $filename = $sheetName = "export_demo"; /** * excel表头 */ $title = [ '序号'=>'_id', 'ID'=>'id', '订单编号'=>'order_sn', '用户id'=>'user_id', '结算日期'=>'day', '下单时间'=>'create_time', '图片'=>'image', ]; /** * excel数据数组(二维) */ $data = [ [ 'id'=>'1', 'order_sn'=>'20180101465464', 'user_id'=>'1000', 'day'=>'20220101', 'create_time'=>'1687140376', 'image'=>[ 'type'=>'image', 'content'=>'https://sns.bjwmsc.com/wp-content/themes/zibll/img/logo.png',//网络图片确保存在 'height'=>100, // 'width'=>100,//只设置高,宽会自适应,如果设置宽后,高则失效 ], ],[ 'id'=>'2', 'order_sn'=>'20190101465464', 'user_id'=>'1000', 'day'=>'20220101', 'create_time'=>'1687140376', 'image'=>[ 'type'=>'image', 'content'=>'./text.png',//本地图片确保存在 'height'=>100, ], ],[ 'id'=>'3', 'order_sn'=>'20200101465464', 'user_id'=>'1000', 'day'=>'20220101', 'create_time'=>'1687140376', ],[ 'id'=>'4', 'order_sn'=>'20210101465464', 'user_id'=>'1001', 'day'=>'20220101', 'create_time'=>'1687140376', ], ]; $TSpreadSheet = TSpreadSheet::export() //创建一个sheet,设置sheet表头,并给表格赋值 ->createWorkSheet($sheetName)->setWorkSheetData($title,$data); // ->createWorkSheet($sheetName1)->setWorkSheetData($title1,$data1);//如果多个sheet可多次创建 //文件存储本地 $path = $TSpreadSheet->generate()->save($filename); echo '生成excel路径:'.$path;exit(); //生成excel路径:E:\spreadsheet-php\example\public\export\20240402\export_demo_2024-04-02_351.xlsx
这样直接输出到浏览器中下载
$TSpreadSheet->generate()->download($filename);
配置参数可以通过配置文件在初始化时传入
$config = [
'pathName'=>null, //文件存储位置
'fileName'=>null, //文件名称
'horizontalCenter'=>true, //是否居中
'titleHeight'=>null, //定义表头行高,常用22
'titleWidth'=>null, //定义表头列宽(未设置则自动计算宽度),常用20
'height'=>null, //定义数据行高,常用22
'autoFilter'=>false, //自动筛选(是否开启)
'autoDataType'=>true, //自动适应文本类型
'freezePane'=>false, //冻结窗格(要冻结的首行首列"B2",false不开启)
];
$TSpreadSheet = TSpreadSheet::export($config);
//配置参数也可以后期赋值
$TSpreadSheet = TSpreadSheet::export($config)->setAutoFilter(true);
2.2.excel导入
<?php use tinymeng\spreadsheet\TSpreadSheet; require __DIR__.'/vendor/autoload.php'; /** * excel生成文件名 */ $filename = './export_demo.xlsx'; /** * excel表头 */ $title = [ '序号'=>'id', '订单编号'=>'order_sn', '用户id'=>'user_id', '结算日期'=>'day', '下单时间'=>'create_time', ]; //读取并初始化表格内容数据 $TSpreadSheet = TSpreadSheet::import() ->initWorkSheet($filename);//读取并初始化表格内容数据 //设置title对应字段,获取表格内容 $data = $TSpreadSheet->setTitle($title)->getExcelData(); var_dump($data);die; //也可以设置读取第几个sheet $TSpreadSheet = TSpreadSheet::import() ->setFileName($filename)//读取文件路径 ->setSheet(0)//读取第0个sheet ->setTitleRow(1)//表头所在行 ->initWorkSheet();
打印结果如下
array(3) {
[0]=>
array(3) {
["id"]=>
string(1) "1"
["order_sn"]=>
string(14) "20180101465464"
["create_time"]=>
string(19) "2023-06-19 10:06:16"
}
[1]=>
array(3) {
["id"]=>
string(1) "2"
["order_sn"]=>
string(14) "20190101465464"
["create_time"]=>
string(19) "2023-06-19 10:06:16"
}
[2]=>
array(3) {
["id"]=>
string(1) "3"
["order_sn"]=>
string(14) "20200101465464"
["create_time"]=>
string(19) "2023-06-19 10:06:16"
}
}
大家如果有问题要交流,就发在这里吧: Spreadsheet 交流 或发邮件 666@majiameng.com