使用phpexcel导出excel时,怎么让导出的内容带有超链接(想让user_name带一个超链接),该如何实现,静态方法export要怎么改 请大神帮忙 代码如下:
// 判断二维数组中是否有数据 如果有将相关数据导出成excel
if ($errorData !== []) {
$xlsData = Excel::export([
'file_name' => '推广日志 - ' . date('YmdHis'),//文件名称(选填 - 默认为YmdHis格式)
'data' => $errorData,//二维数组
'columns' => [
'id'=>'用户编号',
'user_name'=>'用户名',
'errors'=>'错误信息',
]
]);
return ['file_name'=>'推广日志 - ' . date('YmdHis'),'download_base64' => "data:application/vnd.ms-excel;base64," . base64_encode($xlsData)];
}else{
return ['msg'=>'数据无异常!'];
}
/* 导出 */
public static function export($params) {
$excel = new \PHPExcel();
$excel->setActiveSheetIndex(0);
$excel->getActiveSheet()->setTitle('Simple');
//行配置信息
$columns = $params['columns'];
//mysql数据
$data = $params['data'];
//文件名称
$fileName = isset($params['file_name']) ? $params['file_name'] : date('YmdHis');
//横向序号
$letter = ['A', 'B', 'C', 'D', 'E', 'F', 'G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'];
$letter = array_slice($letter,0,count($columns));
foreach($data as $dataKey => $dataVal){
$row = $dataKey + 2;//行 第二行开始
$letterKey = 0;
foreach($columns as $columnKey => $columnVal){
//设置表头
if($dataKey == 0){
$label = gettype($columnVal) == 'string' ? $columnVal : $columnVal['label'];
// echo $letter[$letterKey].'1/'.$label.'<br/>';
//单元格宽度
$width = isset($columnVal['width']) ? $columnVal['width'] : null;
$excel->getActiveSheet()->getDefaultColumnDimension($letter[$letterKey])->setWidth($width);
$excel->getActiveSheet()->setCellValue("$letter[$letterKey]1", "$label");
}
if (gettype($columnVal) == 'string') {
$field = $columnKey;//字段名称
$value = $dataVal[$field];
} else {
$field = $columnVal['field'];
if (isset($columnVal['value'])) {
$value = $columnVal['value'];
if (gettype($columnVal['value']) == 'object') {
$value = $value($dataVal[$field], $dataVal, $dataKey);
}
} else {
$value = $dataVal[$field];
}
}
if (isset($columnVal['select'])) {
$select = $columnVal['select'];
$value = isset($select[$value]) ? $select[$value] : '';
}
if (isset($columnVal['format']) && $columnVal['format'] === 'date') {
$value = !empty($value) ? date('Y-m-d', $value) : '';
}
// echo $letter[$letterKey].$row.'/'.$value.'----------';
//设置表数据
if(isset($columnVal['format']) && $columnVal['format'] == 'text'){
$excel->getActiveSheet()->setCellValue("$letter[$letterKey]$row" , "$value" . "\t", \PHPExcel_Cell_DataType::TYPE_STRING);
}else{
$excel->getActiveSheet()->setCellValue("$letter[$letterKey]$row", "$value");
}
$letterKey +=1;
}
// echo '<br/>';
}
$write = new \PHPExcel_Writer_Excel5($excel);
if($_SERVER['REQUEST_METHOD'] == 'POST'){
ob_start();
$write->save('php://output');
$xlsData = ob_get_contents();
ob_end_clean();
return $xlsData;
}else{
header("Pragma: public");
header("Expires: 0");
header("Cache-Control:must-revalidate, post-check=0, pre-check=0");
header("Content-Type:application/force-download");
header("Content-Type:application/vnd.ms-execl");
header("Content-Type:application/octet-stream");
header("Content-Type:application/download");
header('Content-Disposition:attachment;filename="'.$fileName.'.xls"');
header("Content-Transfer-Encoding:binary");
echo $write->save('php://output');exit;
}
}