thinkphp中使用PHPEXCEL導出數據

thinkphp中導出二維數組到Excelphp

1.解決時間長度致使EXCEL出現###問題  thinkphp

2.解決長數值型 帶來的科學記數法導出問題 訂單號再也不變爲科學記數法 而是直接字符串類型數組

代碼以下:app

<?php
/**
 * Author lizhaoyao
 * Add_Time:2015-08-26
 * [php_excel_export 用戶導出Excel]
 * @param  array  $data       [含有表頭的數組]
 * @param  string $file_name  [要保存的文件名]
 * @param  string $sheet_name [工做表名稱]
 * @return [type]             [返回Excel]
 */
function php_excel_export($data=array(),$file_name='',$sheet_name='導出記錄')
{
    if($file_name==""){$file_name=time();}//若是沒有給名稱 默認爲當前時間戳
    Vendor('Classes.PHPExcel');//導入擴展類
    $objPHPExcel = new PHPExcel();//實例化PHPExcel
    $data_key=array_keys($data);//取出二維數組的第一個元素
    $keys_list=array_keys($data[$data_key[0]]);//取出二維數組第一個數組的全部key
    //爲何這麼作  爲何不用$data[0]? 由於該方法未知用戶傳入的data是何種數組 若是是關聯數組 $data[0]將失效且報警告
    /*如下就是對處理Excel裏的數據, 橫着取數據,主要是這一步,其餘基本都不要改*/
    foreach($data as $k => $v)
    {
        $num=$k+1;//定義起始符
        $middle_obj=$objPHPExcel->setActiveSheetIndex(0);//獲取第一個工做表
        $start_column='A';//定義起始列爲A
        foreach ($keys_list as $key => $value)
        {
            $objPHPExcel->getActiveSheet()->setCellValueExplicit($start_column.$num, $v[$value],PHPExcel_Cell_DataType::TYPE_STRING);//循環着給第幾列賦值 並把長數值型變爲文本型輸出 解決導出造成科學記數法的瑕疵
            //在excel中  列是以 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z AA AB AC AD AE AF……這樣的形式增長的
            //而字符串的增長正好符合這一規律 這也意味着 咱們能夠用字符串的自增來看成列
            $objPHPExcel->getActiveSheet()->getColumnDimension($start_column)->setWidth(280);//設置每列寬度爲280
            $start_column++;//將列自增
        }
    }
    $objPHPExcel->getActiveSheet()->setTitle($sheet_name);//設置sheet工做表名稱
    $objPHPExcel->setActiveSheetIndex(0);//設置表頭
    header('Content-Type: application/vnd.ms-excel');//輸出頭信息
    header('Content-Disposition: attachment;filename="'.$file_name.'.xls"');//設置xls文件名稱
    header('Cache-Control: max-age=0');
    $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');//建立輸出
    $objWriter->save('php://output');exit();//保存輸出到下載
}
?>

此方法用到字符串加加的形式 入A++變爲B Z++變爲AA的原理 須要深入理解字符串自增才行spa

相關文章
相關標籤/搜索