123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155 |
- <?php
- require_once(__DIR__ . '/../vendor/autoload.php');
- use Pxlswrite\DB\DB;
- use Pxlswrite\Pxlswrite;
- use Pxlswrite\WebSocket\WebSocketClient;
- $time = time();
- $fileObj = new Pxlswrite(['path' => __DIR__ . '/uploads']);
- $pushHandle = new WebSocketClient('ws://192.168.18.192:9502', $_GET['fd']);
- $fileObj->fileName('1234.xlsx');
- $style = [
- 'align' => [Pxlswrite::FORMAT_ALIGN_CENTER, Pxlswrite::FORMAT_ALIGN_VERTICAL_CENTER],
- 'border' => Pxlswrite::BORDER_SLANT_DASH_DOT,
- 'background' => Pxlswrite::COLOR_RED,
- 'fontColor' => Pxlswrite::COLOR_BLUE,
- 'underline' => Pxlswrite::UNDERLINE_SINGLE,
- 'fontSize' => 30,
- 'font' => 'FontName',
- 'number' => '#,##0',
- 'bold' => true,
- 'strikeout' => false,
- 'wrap' => true,
- 'italic' => true,
- ];
- $field = [
- 'id' => ['name' => 'title'],
- 'c1' => ['name' => 'age'],
- 'c2' => ['name' => 'year'],
- 'c3' => ['name' => 'kk'],
- 'c4' => ['name' => 'll'],
- 'c5' => ['name' => 'aa', 'callback' => 'myFormat']
- ];
- $orderField = [
- 'order'=>['name'=>'订单号'] ,
- 'time'=>['name'=>'下单时间'],
- 'username'=>['name'=>'用户名'],
- 'address'=>['name'=>'地址'],
- 'phone'=>['name'=>'手机号'],
- 'itemnumer'=>['name'=>'子订单号'],
- 'productname'=>['name'=>'商品名称'],
- 'amount'=>['name'=>'数量'],
- 'mark'=>['name'=>'备注'],
- ];
- $filePath = $fileObj
- ->setDefaultStyle(['align'=>[Pxlswrite::FORMAT_ALIGN_CENTER,Pxlswrite::FORMAT_ALIGN_VERTICAL_CENTER]])
- ->field($orderField)
- ->setOrderData('generateOrderData',['order','time'],[],$pushHandle)
- ->setAutoSize()
- ->setColumn('A:A',50,['align'=>[Pxlswrite::FORMAT_ALIGN_LEFT,Pxlswrite::FORMAT_ALIGN_VERTICAL_CENTER]])
- ->setColumn('B:B',-1,['fontColor'=>Pxlswrite::COLOR_PINK])
- ->setColumn('F:F',50)
- ->output();
- $memory = floor((memory_get_peak_usage()) / 1024 / 1024) . "MB";
- $execute_time = time() - $time . 's';
- echo json_encode(['code' => 1, 'msg' => '导出完毕', 'url' => '/download.php?file=' . $filePath, 'data' => ['memory' => $memory, 'excute_time' => $execute_time]]);
- function generateData()
- {
- $db = DB::getInstance();
- $step = 10000;
- for ($i = 0; $i < 10000; $i = $i + $step) {
- yield $db->get_records_sql("select * from sheet1 limit {$i},{$step}", null, PDO::FETCH_ASSOC);
- }
- }
- function myFormat($v, $values)
- {
- return $v . '自定义格式化-' . $values['id'];
- }
- function generateOrderData(){
- for ($i=0;$i<100;$i++){
- $order = [];
- $range = mt_rand(0,5);
- for($k = 0;$k<$range;$k++){
- $orderId = date('YmdHis').rand(1000,9999);
- $range2 = mt_rand(1,5);
- $item = [];
- for($j = 0;$j<$range2;$j++){
- $item[] = [
- 'itemnumer'=>$orderId,
- 'productname'=>'商品'.rand(10,99),
- 'amount'=>'1',
- 'mark'=>'备注',
- ];
- }
- $order[] = [
- 'order'=>$orderId ,
- 'time'=>date('Y-m-d H:i:s'),
- 'username'=>'张三',
- 'address'=>'成都',
- 'phone'=>'17756891562',
- 'item'=> $item,
- ];
- }
- yield $order;
- }
- }
|