php快捷导出excel文件/不依赖扩展
使用PhpSpreadsheet 保存excel文件 blog 读取数据,生成table
$orderList = Db::query($query);
$strTable = '<table width="500" border="1">';
$strTable .= '<tr>';
$strTable .= '<td style="text-align:center;font-size:12px;width:120px;">商品ID' . date("Y/m/d H:i:s", $begin) . '到' . date("Y/m/d H:i:s", $end);'</td>';
$strTable .= '<td style="text-align:center;font-size:12px;" width="100">商品名称</td>';
$strTable .= '<td style="text-align:center;font-size:12px;" width="*">规格</td>';
$strTable .= '<td style="text-align:center;font-size:12px;" width="*">总数量</td>';
$strTable .= '<td style="text-align:center;font-size:12px;" width="*">购买单数</td>';
$strTable .= '</tr>';
if (is_array($orderList)) {
foreach ($orderList as $k => $val) {
$strTable .= '<tr>';
$strTable .= '<td style="text-align:center;font-size:12px;"> ' . $val['goods_id'] . '</td>';
$strTable .= '<td style="text-align:left;font-size:12px;">' . $val['goods_name'] . ' </td>';
$strTable .= '<td style="text-align:left;font-size:12px;">' . $val['spec_key_name'] . '</td>';
$strTable .= '<td style="text-align:left;font-size:12px;">' . $val['goods_sum'] . ' </td>';
$strTable .= '<td style="text-align:left;font-size:12px;">' . $val['goods_user_count'] . '</td>';
$strTable .= '</tr>';
}
}
$strTable .= '</table>';
unset($orderList);
downloadExcel($strTable, 'order');
exit();
主要实现
/**
* 导出excel
* @param $strTable 表格内容
* @param $filename 文件名
*/
function downloadExcel($strTable,$filename)
{
header("Content-type: application/vnd.ms-excel");
header("Content-Type: application/force-download");
header("Content-Disposition: attachment; filename=".$filename."_".date('Y-m-d').".xls");
header('Expires:0');
header('Pragma:public');
echo '<html><meta http-equiv="Content-Type" content="text/html; charset=utf-8" />'.$strTable.'</html>';
}
直接导出方法二
public function openexcel()
{
header("Content-type:application/vnd.ms-excel");
header("Content-Disposition:attachement;filename=Haoyunyun_" . date("Ymd") . ".xls");
$list = Db::table('info2')->limit(10)->select();
// 表头
$ReportArr[] = [1, 2, 3, 4, 5];
foreach ($list as $key => $value) {
$ReportArr[] = [$value['name'],$value['name'],$value['name'],$value['name'],$value['name']];
}
$ReportContent = '';
$num1 = count($ReportArr);
for ($i = 0; $i < $num1; $i++) {
$num2 = count($ReportArr[$i]);
for ($j = 0; $j < $num2; $j++) {
$ReportContent .= '"' . $ReportArr[$i][$j] . '"' . "\t";
}
$ReportContent .= "\n";
}
// 乱码请注释
// $ReportContent = mb_convert_encoding($ReportContent, "gb2312", "utf-8");
die($ReportContent); // 框架内推荐使用die
}
方法二的大容量
public function more_openexcel()
{
header("Content-type:application/vnd.ms-excel");
header("Content-Disposition:attachement;filename=Haoyunyun_" . date("Ymd") . ".xls");
// 表头
$ReportArr[] = ['ID', '名称', '地址', '电话', 'p'];
Db::table('info2')->chunk(100, function ($datas) use (&$ReportArr) {
foreach ($datas as $data) {
$ReportArr[] = [$data['id'], $data['name'], $data['address'], $data['mobile'], $data['p']];
}
});
$ReportContent = '';
$num1 = count($ReportArr);
for ($i = 0; $i < $num1; $i++) {
$num2 = count($ReportArr[$i]);
for ($j = 0; $j < $num2; $j++) {
$ReportContent .= '"' . $ReportArr[$i][$j] . '"' . "\t";
}
$ReportContent .= "\n";
}
// $ReportContent = mb_convert_encoding($ReportContent, "gb2312", "utf-8");
die($ReportContent); // 框架内推荐使用die
}