/** * 导出excel文件 * * @param string $excelFileName 导出的文件名 * @param array $title excel的标题列 * @param array $data 导出的数据 */ public function exportExcel($excelFileName, $title, $data) { $str = "<html xmlns:o=\"urn:schemas-microsoft-com:office:office\"\r\nxmlns:x=\"urn:schemas-microsoft-com:office:excel\"\r\nxmlns=\"http://www.w3.org/TR/REC-html40\">\r\n<head>\r\n<meta http-equiv=Content-Type content=\"text/html; charset=utf-8\">\r\n</head>\r\n<body>"; $str .="<table border=1 align=center cellpadding=0 cellspacing=0>"; // 拼接标题行 $str .= '<tr style="height:25px;font-size:13px;font-weight: bold;">'; foreach ($title as $key => $val) { $str .= '<td>'.$val.'</td>'; } $str .= '</tr>'; // 拼接数据 foreach ($data as $key => $val) { $str .= '<tr style="text-align: left;height:25px;font-size:13px;">'; foreach ($val as $v) { if (is_numeric($v) && $v > 100000000) { $str .= "<td style='vnd.ms-excel.numberformat:@'>".$v."</td>"; } elseif (is_numeric($v) && preg_match('/^[0-9]+(\.[0-9]{2})+$/', $v)) { // 是两位小数的保留2位显示 $str .= "<td style='vnd.ms-excel.numberformat:0.00'>".$v."</td>"; } elseif (preg_match('/^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1]) (0[0-9]|1[0-9]|2[0-4]):(0[0-9]|[1-5][0-9]):(0[0-9]|[1-5][0-9])$/', $v)) { // 是日期 $str .= "<td style='vnd.ms-excel.numberformat:yyyy-mm-dd\ hh\:mm\:ss'>".$v."</td>"; } else { $str .= "<td>".$v."</td>"; } } $str .= "</tr>\n"; } $str .= "</table></body></html>"; // 实现文件下载 header("Content-Type: application/vnd.ms-excel; name='excel'"); header("Content-type: application/octet-stream"); header("Content-Disposition: attachment; filename=" . $excelFileName); header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("Pragma: no-cache"); header("Expires: 0"); exit($str); }
td
L'exportation ci-dessus aura plusieurs problèmes courants :
1 Pour le numéro d'identification, le numéro de téléphone portable et autres nombres excessivement grands, ils seront affichés en notation scientifique. Si l'affichage de la chaîne ne vous dérange pas, vous pouvez le contrôler en définissant le style de
Cela signifie l'afficher sous forme de texte
2 Pour les nombres, si vous devez conserver les décimales, vous pouvez définir
Si vous en avez besoin. conservez le nombre de décimales, écrivez simplement quelques 0. Notez que si vous transmettez une valeur avec plus de décimales que ce qui peut être conservé, la valeur sera arrondie. Par exemple, si l'entrée est 87,98 et que le paramètre décimal est, alors il sera affiché comme 88,0td
style='vnd.ms-excel.numberformat:@'
3 Pour le paramètre de format de date
Celles-ci seront affichées sous la forme style='vnd.ms-excel.numberformat:0.00'
; elles seront affichées sous la forme vnd.ms-excel.numberformat:0.0
4. Si vous souhaitez afficher le pourcentage, vous pouvez utiliser le format style='vnd.ms-excel.numberformat:yyyy-mm-dd hh:mm:ss'
Une chose à noter est que votre valeur sera amplifiée 100 fois lors de son affichage. Autrement dit, si vous souhaitez l'afficher sous la forme style='vnd.ms-excel.numberformat:"Short Date"'
, la valeur que vous transmettez doit être 2019/7/1
style='vnd.ms-excel.numberformat:"Medium Date"'
1-Jul-19
5, séparateur de milliers. Si vous devez afficher des nombres avec des séparateurs de milliers, vous pouvez définir
sera affiché comme style='vnd.ms-excel.numberformat:0%'
2%
0.02
Les plus couramment utilisés sont ceux ci-dessus. Il existe également une liste couramment utilisée ici, mais le mot-clé qu'il utilise est.
dans style='vnd.ms-excel.numberformat:#,###'
Les deux 123456
et 123,456
vont bien.
mso-number-format
style
PHP exporte CSVmso-number-format
vnd.ms-excel.numberformat
Le fichier CSV est en fait un fichier à usage général, parfois également appelé fichier texte. Par conséquent, le fichier de datagramme CSV exporté ne peut pas définir le style de cellule et le fichier xls est un fichier binaire et doit être ouvert à l'aide d'outils tels qu'Excel. S'il n'y a pas d'exigence stricte pour exporter cela plus rapidement, je vois que certaines exportations sur Alibaba Cloud sont au format CSV, mais ce dont nous avons besoin ici doivent être des fichiers Excel
/** * 导出CSV标准文件 * * @param string $fileName 导出的文件名 * @param array $title 标题列 * @param array $data 导出的数据 */ function exportCsv($fileName, $title, $data) { // 清空输出流,防止有别的信息 ob_end_clean(); // 打开一个输出流 ob_start(); // 设置header信息 header("Content-Type: text/csv"); header("Content-Disposition:filename=". $fileName); // 打开文件流 $fileHandle = fopen('php://output', 'w'); //转码 防止乱码 fwrite($fileHandle, chr(0xEF).chr(0xBB).chr(0xBF)); // 先把标题写进去 fputcsv($fileHandle, $title); $index = 0; foreach ($data as $item) { // 每2000条释放一次资源 if ($index == 2000) { $index = 0; ob_flush(); flush(); } $index++; fputcsv($fileHandle, $item); } // 释放资源 ob_flush(); flush(); ob_end_clean(); }
Tutoriel vidéo PHP
》 ' ' ' àà travers ' ' à ' ‐ à ' ‐ ‐ ‐ ‐ ‐ ,
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!