400-800-9385
網站扶植資訊詳細

PHPexcel導入導出的簡略利用

頒發日期:2021-05-29 11:25:23   作者來歷:李彬   閱讀:2261   標簽:PHPexcel導入導出    
利用php的時辰必然會碰到表格導入導出的功效吧,這里簡略來詮釋一下PHP中PHPExcel的利用若何來導入導出數據。
起首要去PHPExcel官網下載

1

 
這是我名目中的phpexcel類庫
先說一下導入 首要是要經由過程文件上傳,而后獲得到這個上傳的文件 而后能夠用PHPExcel的方式去讀取文件的內容 并前往一個數組,而后拼裝你要的數據停止數據庫操縱
 
這里我用的封裝好的方式去讀取的excel文件的數據
$filename 文件的地點 須要一個絕對途徑
$begin 從第幾行起頭讀取 (這里普通是第二行 第一行根基是內容的標題或描寫)
$allColumn 數據最初一列的字母  比方第G列是最初的數據列 就傳G

2

 
封裝方式:
function excelImport($filename, $begin,$allColumn) {
    Vendor('PHPExcel.PHPExcel');
    //成立reader工具
    $PHPReader = new PHPExcel_Reader_Excel2007();
    if (!$PHPReader->canRead($filename)) {
        $PHPReader = new PHPExcel_Reader_Excel5();
        if (!$PHPReader->canRead($filename)) {
            return array();
        }
    }
 
    //成立excel工具,此時你即能夠經由過程excel工具讀取文件,也能夠經由過程它寫入文件
    $PHPExcel = $PHPReader->load($filename);
 
    /*     * 讀取excel文件中的第一個任務表 */
    $currentSheet = $PHPExcel->getSheet(0);
    /*     * 獲得最大的列號 */
  //  $allColumn = $currentSheet->getHighestColumn();
    /*     * 獲得一共有幾多行 */
    $allRow = $currentSheet->getHighestRow();
 
    $returnCell = '';
    //輪回讀取每個單位格的內容。注重行從1起頭,列從A起頭
    for ($rowIndex = $begin; $rowIndex <= $allRow; $rowIndex++) {
        for ($colIndex = 'A'; $colIndex <= $allColumn; $colIndex++) {
            $addr = $colIndex . $rowIndex;
            $cell = $currentSheet->getCell($addr)->getValue();
            if ($cell instanceof PHPExcel_RichText) {
                //富文本轉換字符串
                $returnCell[$rowIndex][$colIndex] = $cell->__toString();
            } else {
                $returnCell[$rowIndex][$colIndex] = $cell;
            }
        }
    }
    return $returnCell;
 
}

3

 
讀取后會輸入一個數組,以下

7

 

 
獲得到數據后利用輪回掏出外面的數據 實現后清空了一下數據數組
這是簡略兩列數據的導入 .
 
再來講一下導出
我也是利用的PHPExcel
 
這里是先建立一個表格第一行的標題數組和導出的文件稱號

 
一個一維數組鍵名要對應 表格列的字母

 
上面是要拼裝導出數據
這是一個二維數組 須要 每行對應呼應的列的字母

 
這里給了一個key值來肯定數據是從第幾行起頭寫入的
由于有標題的存在以是是從第二行起頭如正式數據,

 
利用上面這個封裝的導出方式停止導出 ,會主動利用閱讀器下載你要導出的表格
 
 
 
 
 
 
 
 
 
 
 
 
 
這里也封裝了一個導出的方式
 /**
 * 導出成Excel文件
 * @param type $filename 文件名
 * @param type $data_title 頭部字段
 * @param type $data_content 內容
 * @param type $Sheet1
 * @param type $save_to_file 是不是保管成文件,true保管
 * @param type $save_path 文件保管途徑
 */
function excelExport($filename, $data_title, $data_content, $Sheet1 = "Sheet1", $save_to_file = false, $save_path = './Static/File/') {
    Vendor('PHPExcel.PHPExcel');
    //PHPExcel撐持讀模版 以是我仍是比擬喜好先做好一個Excel的模版  比擬好,不然要寫良多代碼  模版我放在根目次了
    //建立一個工具
    $objPHPExcel = new PHPExcel();
    $objPHPExcel->getProperties()->setCreator("qiandai");
    //獲得以后勾當的表
    $objActSheet = $objPHPExcel->setActiveSheetIndex(0);
    $objActSheet->setTitle($Sheet1); //任務表標簽
    foreach ($data_title as $data_title_key => $data_title_value) {//寫入文件表頭內容
        $objActSheet->setCellValue($data_title_key.'1', $data_title_value);
        $objPHPExcel->getActiveSheet()->getColumnDimension($data_title_key)->setWidth(30);//設置列的寬度
    }
    //此刻就起頭填湊數據了  (從數據庫中)  $data_content
    foreach ($data_content as $data_content_value) {//寫入 文件內容
        foreach ($data_content_value as $data_content_key => $data_content_value2) {
            $objActSheet->setCellValue($data_content_key, $data_content_value2);
        }
    }
 
    //導出
    header('Content-Type: application/vnd.ms-excel;charset=utf-8');
    header('Content-Disposition: attachment;filename="' . $filename . '.xls"');
    header('Cache-Control: max-age=0');
    $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
    if ($save_to_file) {
        $objWriter->save($save_path . $filename);
    } else {
        $objWriter->save('php://output');
        exit;
    }
}
若是有甚么方式不清晰或想點竄表格的其余設置的能夠去檢查手冊停止增加。
導入導出首要仍是大白封裝的方式和建立對應的數組,但愿能對剛打仗到表格導入導出沒法動手的人有所贊助。
如沒特別說明,文章均為方維收集首創,轉載請說明來自http://sunshineooty.com/news/5682.html