PHP 导出Excel 文件的两种方法
2018-08-21 12:22:02 小德 PHP 访问次数 391


方法一:echo xls 文件 so  easy

拷贝这个函数,然后传入数据$data为二维数组就行了,然后调用这个函数就可以了;

public static function excel($data, $fileName)
{

    header("Content-Type: application/vnd.ms-excel");
    header("Content-Disposition: attachment; filename=$fileName.xls"); // 表名
    header("Pragma: no-cache"); // 缓存
    header("Expires: 0");

    $sepcol = " \t ";   // 分列;
    $sepbr = "\n";  // 分行
    foreach ($data as $key) {
        foreach ($key as $value) {   // 一行
            echo mb_convert_encoding($value, "GBK", "utf-8") . $sepcol;  // 分列
        }
        echo $sepbr;//分行
    }
    exit;

}

    

方法二,使用PHPExcel类库  传入data同方法一

public static function export($data, $fileName)
{
    $objPHPExcel = new PHPExcel();

    $objPHPExcel->getProperties()->setCreator("Da")
        ->setLastModifiedBy("Da")
        ->setTitle("Office 2007 XLSX Test Document")
        ->setSubject("Office 2007 XLSX Test Document")
        ->setDescription("Test document for Office 2007 XLSX,generated using PHP classes.")
        ->setKeywords("office 2007 openxml php")
        ->setCategory("Test result file");


    $objPHPExcel->getActiveSheet()->getDefaultColumnDimension()->setWidth(15);//单元格宽度

    $objPHPExcel->getActiveSheet()->getDefaultStyle()->getFont()->setName('Arial');//设置字体

    $objPHPExcel->getActiveSheet()->getDefaultStyle()->getFont()->setSize(10);//设置字体大小


    $sheet = 0;

    foreach ($data as $key => $content) {   // sheet

        if ($sheet > 0) {

            $objPHPExcel->createSheet();

        }

        $objPHPExcel->setActiveSheetIndex($sheet);

        $objPHPExcel->getActiveSheet($sheet)->setTitle($key);// sheet标题

        $row = 1;

        foreach ($content as $key => $info) {   // 行

            $column = 0;

            foreach ($info as $value) {    // 列

                $cn = chr(ord('A') + (int)$column);

                $cell = $cn . $row;

                $objPHPExcel->getActiveSheet($sheet)->setCellValue($cell, $value);  //内容

                $column++;

            }

            $row++;

        }

        $sheet++;

    }


    //头部输出

    header('Content-Type: application/vnd.ms-excel');

    header('Content-Disposition: attachment;filename="' . $fileName . date("YmdHis") . '.xls"');

    header('Cache-Control: max-age=0');

    $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');

    $objWriter->save('php://output');

    exit;
}