1. 程式人生 > >php 匯出excel

php 匯出excel

以下程式碼只是為了以後方便我自己複製使用,哈哈

/*------------------------------------------------------ */
//-- 匯出分類
/*------------------------------------------------------ */
if ($_REQUEST['act'] == 'export')
{
    ini_set('memory_limit','500M');
    set_time_limit(0);
    $cat_name = '分類表';
    //PHPExcel類
    require_once ROOT_PATH . 'includes/modules/PHPExcel/Classes/PHPExcel.php';
    require_once ROOT_PATH . 'includes/modules/PHPExcel/Classes/PHPExcel/IOFactory.php';
    $PHPExcel = new PHPExcel();

    //設定excel屬性基本資訊
    $PHPExcel->getProperties()->setCreator("Neo")
    ->setLastModifiedBy("Neo")
    ->setTitle($cat_name)
    ->setSubject("分類表")
    ->setDescription("")
    ->setKeywords("分類表")
    ->setCategory("");

    $PHPExcel->setActiveSheetIndex(0);
    $PHPExcel->getActiveSheet()->setTitle("分類表");
    //填入表頭主標題
    $PHPExcel->getActiveSheet()->setCellValue('A1', $cat_name);
    //填入表頭副標題
    $PHPExcel->getActiveSheet()->setCellValue('A2', '操作者:'.$_SESSION['admin_name'].' 匯出日期:'.local_date('Y-m-d',time()));
    //合併表頭單元格
    $PHPExcel->getActiveSheet()->mergeCells('A1:Q1');
    $PHPExcel->getActiveSheet()->mergeCells('A2:Q2');
    
    //設定表頭行高
    $PHPExcel->getActiveSheet()->getRowDimension(1)->setRowHeight(40);
    $PHPExcel->getActiveSheet()->getRowDimension(2)->setRowHeight(20);
    $PHPExcel->getActiveSheet()->getRowDimension(3)->setRowHeight(30);
    
    //設定表頭字型
    $PHPExcel->getActiveSheet()->getStyle('A1')->getFont()->setName('黑體');
    $PHPExcel->getActiveSheet()->getStyle('A1')->getFont()->setSize(20);
    $PHPExcel->getActiveSheet()->getStyle('A1')->getFont()->setBold(true);
    $PHPExcel->getActiveSheet()->getStyle('A2')->getFont()->setName('宋體');
    $PHPExcel->getActiveSheet()->getStyle('A2')->getFont()->setSize(14);
    $PHPExcel->getActiveSheet()->getStyle('A3:Q3')->getFont()->setBold(true);
         
    // 表格寬度
    $PHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(10);//分類ID
    $PHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(20);//分類名稱
    $PHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(20);//上級分類ID
    $PHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(20);//排序
    $PHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(20);//是否顯示

    // $objActSheet->getColumnDimension('B')->setAutoSize(true);   //內容自適應

    //表格標題
    $PHPExcel->getActiveSheet()->setCellValue('A3', '分類ID');
    $PHPExcel->getActiveSheet()->setCellValue('B3', '分類名稱');
    $PHPExcel->getActiveSheet()->setCellValue('C3', '上級分類ID');
    $PHPExcel->getActiveSheet()->setCellValue('D3', '排序');
    $PHPExcel->getActiveSheet()->setCellValue('E3', '是否顯示');

    

    /* 獲取分類資料 */
    $sql = "SELECT * FROM " .$GLOBALS['ecs']->table('category') ."  ORDER BY cat_id asc";

    $hang = 3;
    $max_row=0;
    $res=$db->query($sql);

    while($row=$db->fetchRow($res)){  
        $hang++;
        $PHPExcel->getActiveSheet()->setCellValue('A' . ($hang), $row['cat_id']);//分類ID
        $PHPExcel->getActiveSheet()->setCellValue('B' . ($hang), $row['cat_name']);//分類名稱
        $PHPExcel->getActiveSheet()->setCellValue('C' . ($hang), $row['parent_id']);//上級分類ID
        $PHPExcel->getActiveSheet()->setCellValue('D' . ($hang), $row['sort_order']);//排序
        $PHPExcel->getActiveSheet()->setCellValue('E' . ($hang), $row['is_show']);//是否顯示
    
    }      

    ob_end_clean();//清除緩衝區,避免亂碼
    header('Content-Type: application/vnd.ms-excel'); 
    header('Content-Disposition: attachment;filename=" '.$cat_name.'.xls"'); //日期為檔名字尾 
    header('Cache-Control: max-age=0'); 
    $objWriter = PHPExcel_IOFactory::createWriter($PHPExcel, 'Excel5'); //excel5為xls格式,excel2007為xlsx格式 
    $objWriter->save('php://output');
    exit;
}