400-800-9385
網站建設資訊詳細

PHPexcel導入導出的(de)簡單使用(yòng)

發表日期:2020-05-29 11:25:23   作者來(lái)源:李彬   浏覽:5466   标簽:PHPexcel導入導出    
使用(yòng)php的(de)時(shí)候一定會遇到表格導入導出的(de)功能吧,這(zhè)裏簡單來(lái)解釋一下(xià)PHP中PHPExcel的(de)使用(yòng)如何來(lái)導入導出數據。
首先要去PHPExcel官網下(xià)載

1

 
這(zhè)是我項目中的(de)phpexcel類庫
先說一下(xià)導入 主要是要通(tōng)過文件上傳,然後獲取到這(zhè)個(gè)上傳的(de)文件 然後可(kě)以用(yòng)PHPExcel的(de)方法去讀取文件的(de)内容 并返回一個(gè)數組,然後拼裝你要的(de)數據進行數據庫操作
 
這(zhè)裏我用(yòng)的(de)封裝好的(de)方法去讀取的(de)excel文件的(de)數據
$filename 文件的(de)地址 需要一個(gè)相對(duì)路徑
$begin 從第幾行開始讀取 (這(zhè)裏一般是第二行 第一行基本是内容的(de)标題或者描述)
$allColumn 數據最後一列的(de)字母  比如第G列是最後的(de)數據列 就傳G

2

 
封裝方法:
function excelImport($filename, $begin,$allColumn) {
    Vendor('PHPExcel.PHPExcel');
    //建立reader對(duì)象
    $PHPReader = new PHPExcel_Reader_Excel2007();
    if (!$PHPReader->canRead($filename)) {
        $PHPReader = new PHPExcel_Reader_Excel5();
        if (!$PHPReader->canRead($filename)) {
            return array();
        }
    }
 
    //建立excel對(duì)象,此時(shí)你即可(kě)以通(tōng)過excel對(duì)象讀取文件,也(yě)可(kě)以通(tōng)過它寫入文件
    $PHPExcel = $PHPReader->load($filename);
 
    /*     * 讀取excel文件中的(de)第一個(gè)工作表 */
    $currentSheet = $PHPExcel->getSheet(0);
    /*     * 取得(de)最大(dà)的(de)列号 */
  //  $allColumn = $currentSheet->getHighestColumn();
    /*     * 取得(de)一共有多(duō)少行 */
    $allRow = $currentSheet->getHighestRow();
 
    $returnCell = '';
    //循環讀取每個(gè)單元格的(de)内容。注意行從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

 
讀取後會輸出一個(gè)數組,如下(xià)

7

 

 
獲取到數據後使用(yòng)循環取出裏面的(de)數據 完成後清空了(le)一下(xià)數據數組
這(zhè)是簡單兩列數據的(de)導入 .
 
再來(lái)說一下(xià)導出
我也(yě)是使用(yòng)的(de)PHPExcel
 
這(zhè)裏是先創建一個(gè)表格第一行的(de)标題數組和(hé)導出的(de)文件名稱

 
一個(gè)一維數組鍵名要對(duì)應 表格列的(de)字母

 
下(xià)面是要拼裝導出數據
這(zhè)是一個(gè)二維數組 需要 每行對(duì)應響應的(de)列的(de)字母

 
這(zhè)裏給了(le)一個(gè)key值來(lái)确定數據是從第幾行開始寫入的(de)
因爲有标題的(de)存在所以是從第二行開始如正式數據,

 
使用(yòng)下(xià)面這(zhè)個(gè)封裝的(de)導出方法進行導出 ,會自動使用(yòng)浏覽器下(xià)載你要導出的(de)表格
 
 
 
 
 
 
 
 
 
 
 
 
 
這(zhè)裏也(yě)封裝了(le)一個(gè)導出的(de)方法
 /**
 * 導出成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支持讀模版 所以我還(hái)是比較喜歡先做(zuò)好一個(gè)Excel的(de)模版  比較好,不然要寫很多(duō)代碼  模版我放在根目錄了(le)
    //創建一個(gè)對(duì)象
    $objPHPExcel = new PHPExcel();
    $objPHPExcel->getProperties()->setCreator("qiandai");
    //獲取當前活動的(de)表
    $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);//設置列的(de)寬度
    }
    //現在就開始填充數據了(le)  (從數據庫中)  $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;
    }
}
如果有什(shén)麽方法不清楚或者想修改表格的(de)其他(tā)設置的(de)可(kě)以去查看手冊進行添加。
導入導出主要還(hái)是明(míng)白封裝的(de)方法和(hé)創建對(duì)應的(de)數組,希望能對(duì)剛接觸到表格導入導出無法入手的(de)人(rén)有所幫助。
如沒特殊注明(míng),文章(zhāng)均爲方維網絡原創,轉載請注明(míng)來(lái)自