Skip to content

Commit a433aaa

Browse files
committed
增加生成Excel内容接口
1 parent 471735b commit a433aaa

File tree

2 files changed

+65
-0
lines changed

2 files changed

+65
-0
lines changed
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
<?php
2+
3+
namespace App\Controller\Common;
4+
5+
use App\Middleware\RequestMiddleware;
6+
use App\Controller\AbstractController;
7+
use Hyperf\HttpServer\Annotation\Controller;
8+
use Hyperf\HttpServer\Annotation\Middleware;
9+
use Hyperf\HttpServer\Annotation\RequestMapping;
10+
11+
12+
/**
13+
* Excel导出控制器
14+
* @Controller(prefix="excel")
15+
*/
16+
class ExcelExportController extends AbstractController
17+
{
18+
/**
19+
* 获取Excel内容数据
20+
* @RequestMapping(path="excel_content", methods="post")
21+
* @Middleware(RequestMiddleware::class)
22+
*/
23+
public function getExcelContent()
24+
{
25+
$requestParams = $this->request->all();
26+
$data = $requestParams['data'] ?? []; //数据模块
27+
$percentArr = $requestParams['percent_arr'] ?? []; //是否百分比的字段
28+
$tableHeader = $requestParams['table_header'] ?? []; //表头字段
29+
$tableHeaderMean = $requestParams['table_header_mean'] ?? []; //表头字段解释
30+
$stringArr = $requestParams['string_arr'] ?? []; // 需要以字符形式导出的字段(防止科学计数法格式)
31+
$time = $requestParams['time'] ?? 'time'; //时间字段
32+
33+
$tableContent = '';
34+
$tableContent .= '<table id="tables"><tbody><tr>';
35+
foreach ($tableHeader as $k => $v) {
36+
$tableContent .= '<th>' . $tableHeaderMean[$v] . '</th>';
37+
}
38+
$tableContent .= '</tr>';
39+
foreach($data as $k => $v) {
40+
$tableContent .= '<tr>';
41+
foreach ($tableHeader as $k1 => $v1) {
42+
//判断是否为时间戳格式
43+
if (($v1 == $time || preg_match('/_time/', $v1)) && is_numeric($v[$v1])) {
44+
if (in_array($v1, $stringArr)) {
45+
$tableContent .= '<td style="mso-number-format:\'\@\';" data-tableexport-msonumberformat="\@">' . date('Y-m-d H:i:s', $v[$v1]) . '</td>';
46+
} else {
47+
$tableContent .= '<td>' . date('Y-m-d H:i:s', $v[$v1]) . '</td>';
48+
}
49+
}else {
50+
if (in_array($v1, $stringArr)) {
51+
$tableContent .= '<td style="mso-number-format:\'\@\';" data-tableexport-msonumberformat="\@">' . $v[$v1] . ((in_array($v1, $percentArr)) ? '%' : '') . '</td>';
52+
} else {
53+
$tableContent .= '<td>' . $v[$v1] . ((in_array($v1, $percentArr)) ? '%' : '') . '</td>';
54+
}
55+
}
56+
}
57+
$tableContent .= '</tr>';
58+
}
59+
$tableContent .= '</tbody></table>';
60+
return $this->success([
61+
'excel_content' => $tableContent
62+
]);
63+
}
64+
}

app/Controller/System/DictTypeController.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
use App\Constants\StatusCode;
88
use App\Controller\AbstractController;
99
use App\Foundation\Annotation\Explanation;
10+
use App\Model\System\DictData;
1011
use App\Model\System\DictType;
1112
use Hyperf\Di\Annotation\Inject;
1213
use Hyperf\HttpServer\Annotation\Controller;

0 commit comments

Comments
 (0)