Pārlūkot izejas kodu

Update README.md

yzh 4 gadi atpakaļ
vecāks
revīzija
5d0194dde4
1 mainītis faili ar 42 papildinājumiem un 6 dzēšanām
  1. 42 6
      README.md

+ 42 - 6
README.md

@@ -52,6 +52,7 @@ pecl install xlswriter
 
 ### 导出excel快速上手
 ```
+use Pxlswrite\Pxlswrite;
 $fileObj = new Pxlswrite(['path' => __DIR__]);
 $filePath = $fileObj
     ->fileName('123.xlsx','sheet1') //fileName 会自动创建一个工作表,你可以自定义该工作表名称,工作表名称为可选参数
@@ -77,6 +78,8 @@ function generateData(){
 }
 ```
 ### 下载excel文件
+可以设置文件下载完成后是否自动删除原文件,download方法参数二默认值为true自动删除原文件。
+
 函数原型
 ```
 /**
@@ -90,9 +93,10 @@ download($_filePath, $_isDelete = true)
 示例
 ```
 $fileObj->download($filePath); 
+//false 文件下载后不会自动删除原文件,true 默认值,下载后自动删除原文件
+//$fileObj->download($filePath,false); 
 ```
 ### 使用WebSocket推送excel处理进度
-
 实现过程:前端与websocket服务器先建立连接,连接建立好之后服务端会发送一条消息 {'status' => 'onopen', 'fd' => $request->fd},
 前端将fd保存起来,在请求处理excel接口时将fd参数传给后台,后台在推送进度消息时将fd参数封装到消息体里在发送给websocket服务器
 ,websocket服务器根据fd参数在推送消息给指定的前端,这就完成了web前端、websocket服务器、应用后端之间的数据交互。
@@ -100,7 +104,28 @@ $fileObj->download($filePath);
 * 前端首次连接时websocket服务器发送的消息体结构:['status' => 'onopen', 'fd' => 1]
 * 处理过程中websocket服务器发送的消息体结构:['status' => 'processing', 'process' => 100, 'fd'=>1]
 
-前端可根据status状态进行相应的处理,status = onopen 时保存fd,status = processing 时进行进度条渲染。
+前端可根据status状态进行相应的处理,status = onopen 时保存fd,status = processing 时进行进度条渲染。
+
+配置:
+	 WebSocket服务端默认使用9502端口,可自行修改./src/WebSocket/WebsocketServer的 CONST PORT = 9502  
+	 
+WebSocketClient使用:
+```
+use Pxlswrite\WebSocket\WebSocketClient;
+//ws://127.0.0.1:9502 服务端地址
+//$_GET['fd'] 前端传过来的 web端与websocket服务端连接的唯一标识客户端fd
+$pushHandle = new WebSocketClient('ws://127.0.0.1:9502', $_GET['fd']);
+//发送websocket消息
+$pushHandle->send(['status' => 'rocessing', 'process' => 100, 'fd'=>1]);
+```
+处理excel时自动发送消息(在推送信息失败时不会影响、终止代码的执行,会生成相应的日志文件,日志文件存放于实例化Pxlswrite所设置的路径下的log目录,日志文件按日期存放)
+```
+//通用数据设置 generateData回调生成器方法获取数据,$pushHandle 用于推送,可选参数
+setDataByGenerator('generateData', [], [], $pushHandle)
+//订单类型数据设置 generateOrderData回调生成器方法获取数据,$pushHandle 用于推送,可选参数
+setOrderData('generateOrderData',[],[],pushHandle)
+```
+示例
 
 1.开启websocket 服务端
 ```
@@ -162,6 +187,8 @@ websocket.onerror = function (evt, e) {
 ```
 3.后端处理excel 并调用 WebSocketClient 推送消息
 ```
+use Pxlswrite\Pxlswrite;
+use Pxlswrite\WebSocket\WebSocketClient;
 $fileObj = new Pxlswrite(['path' => __DIR__]);
 //实例化WebSocketClient--需要推送进度才实例化
 $pushHandle = new WebSocketClient('ws://127.0.0.1:9502', $_GET['fd']);
@@ -174,6 +201,9 @@ echo json_encode(['code' => 1, 'msg' => '导出完毕', 'url' => '/download.php?
 ```
 
 ### 设置字段&表格头
+通过field()可以进行字段的定义&表格头的设置,使用header()定义的表格头会覆盖field()定义的表格头;  
+使用field()定义字段后在使用setDataByGenerator()和setOrderData()时会进行字段的过滤,设置了回调的方法还会调用字段的回调方法,进行字段的格式化处理等操作。**但并不推荐设置字段的回调,因为效率不高,可以在传入数据的时候就处理好字段的值**。**推荐使field()设置表格头。**
+
 函数原型
 ```
 /**
@@ -190,6 +220,7 @@ function field($field)
 ```
 示例
 ```
+use Pxlswrite\Pxlswrite;
 //定义字段
 $field = [
     'name' => ['name' => '姓名'],
@@ -321,6 +352,7 @@ mergeCells($scope, $data, $formatHandler = null)
 ```
  示例
 ```
+use Pxlswrite\Pxlswrite;
 $fileObj = new Pxlswrite(['path' => __DIR__]);
 $filePath = $fileObj->fileName('123.xlsx','sheet1')
     ->field($field)//设置字段&表格头
@@ -351,15 +383,15 @@ $fileObj->fileName("test.xlsx")
   ->output();
 ```
 #### 动态合并单元格
-* 通用合并,根据数据的值比较 自动进行 行合并
+* 通用合并,根据数据的值比较 自动进行 行合并(调用方法时需要指定要自动合并的字段,才会根据字段值进行自动合并)
 
 优点:数据层不需要怎么处理,将数据库查询出来的二维数组直接传入即可。  
 缺点:无法满足像订单一样的 存在多个订单时间值是一样的,合并就会存在问题。
 
-* 订单类型合并,将原始数据处理成指定的数据格式在传入此类自动进行 行合并
+* 订单类型合并,将原始数据处理成指定的数据格式在传入此类自动进行 行合并(调用方法时需要指定要自动合并的字段,才会根据字段值进行自动合并)
 
 优点:根据传入的数据格式进行合并,合并更加精准不会存在问题。  
-缺点:在数据层需要处理成指定的数据格式,数据格式如下:
+缺点:对数据格式有要求,在数据层需要处理成指定的数据格式,数据格式如下:
 ```
 $data = [
     [
@@ -379,6 +411,7 @@ $data = [
 ];
 ```
 字段数量,名称没有限制,只支持一个item(也可以叫其他名字)二维数组,item数组里面的个数没有限制。
+**当数据字段的值能明显区分时推荐使用通用合并,当数据字段的值不能明显区分时(如:时间字段)推荐订单类型的合并**
 ##### 通用合并demo
  函数原型
 ```
@@ -395,10 +428,11 @@ $data = [
  * @return Pxlswrite
  * @throws DataFormatException
  */
-setDataByGenerator($_generator, array $_mergeColumn = [], array $_mergeColumnStyle = [], WebSocketClient $_pushHandle = null, $_index = 1
+setDataByGenerator($_generator, array $_mergeColumn = [], array $_mergeColumnStyle = [], WebSocketClient $_pushHandle = null, $_index = 1)
 ```
  示例
 ```
+use Pxlswrite\Pxlswrite;
 //定义字段
 $field = [
     'id' => ['name' => 'title'],
@@ -453,6 +487,7 @@ setOrderData($_generator, array $_mergeColumn = [], array $_mergeColumnStyle = [
 ```
  示例
 ```
+use Pxlswrite\Pxlswrite;
 //定义字段
 $orderField =  [
     'order'=>['name'=>'订单号'] ,
@@ -514,6 +549,7 @@ importDataByCursor($_func, WebSocketClient $_pushHandle = null, array $_dataType
 ```
 示例
 ```
+use Pxlswrite\Pxlswrite;
 $fileObj = new Pxlswrite(['path' => dirname($_GET['file'])]);
 $fileInfo = explode('/', $_GET['file']);
 $fileName = end($fileInfo);