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
    }