PHP操作Excel表格

PHPExcel的使用

最近在項目中需要把Excel表格中的數據導入到數據庫中,同時還要求把數據庫中的數據導出到Excel中,所以在這裏對PHPExcel的操作進行總結,大致分爲上面的兩種情況。
PHPExcel類庫下載地址http://download.csdn.net/detail/li741350149/9792683,下載完成解壓到你的項目中去,就可以使用了。爲了清晰,我的目錄結構如下:

在使用前,請先引入文件

導入數據到數據庫

require_once "./PHPExcel/PHPExcel/IOFactory.php";
require_once "./PHPExcel/PHPExcel.php";

Excel結構:

    /**
     * 導入數據到數據庫
     * @param $file 要導入的Excel的文件路徑
     * @return bool 保存數據成功,返回true;
     */
    public function setDataToDb($file)
    {
        date_default_timezone_set('PRC');//設置時區
        $fileType = PHPExcel_IOFactory::identify($file);//得到Excel的後綴類型
        $objReader = PHPExcel_IOFactory::createReader($fileType);
        $excelpath = $file;
        $objPHPExcel = $objReader->load($excelpath);//進行加載
        $sheet = $objPHPExcel->getSheet(0);//獲取第一個sheet
        $highestRow = $sheet->getHighestRow();       //取得總行數
        $highestColumn = $sheet->getHighestColumn(); //取得總列數
        //進行循環,取出數據
        $data = array();
        for ($j = 2; $j <= $highestRow; $j++)               //從第二行開始讀取數據
        {
            for ($k = 'A'; $k <= $highestColumn; $k++)      //從A列讀取數據
            {
                $arr[$objPHPExcel->getActiveSheet()->getCell("$k" . 1)->getValue()] = $objPHPExcel->getActiveSheet()->getCell("$k$j")->getValue();

            }
            var_dump($arr);
            echo '<br/>';
            /*
             * 操作數據庫把數據存到數據庫中,在這裏只是簡單的展示了出來。
             */
        }
        return true;
    }

這裏只是把數據取出來,操作數據庫並沒有寫,可以按照自己的邏輯進行編寫

導出數據到Excel

    /**
    * @param $file 保存文件的路徑
    * @param $filename 文件名字
    * @param $data 從數據庫得到的數據
    */
    public function getDataFromDb($file,$filename,$data){

        date_default_timezone_set('PRC');//設置時區
        $objPHPExcel = new PHPExcel();
        $objPHPExcel -> setActiveSheetIndex(0); //設置Sheet當前活動的sheet爲0;
        $objSheet = $objPHPExcel -> getActiveSheet(); //得到操作對象
        $objSheet -> setCellValue("A1","姓名") //設置Excel第一行的數據說明。
            -> setCellValue("B1","年齡")
            -> setCellValue("C1","電話")
            -> setCellValue("D1","地址")
            -> setCellValue("E1","編號");
        $j = 2;
        //把數據保存到Excel中
        foreach ($data as $k => $v){
            $objSheet -> setCellValue("A".$j,$v['姓名'])
                -> setCellValue("B".$j,$v['年齡'])
                -> setCellValue("C".$j,$v['電話'])
                -> setCellValue("D".$j,$v['地址'])
                -> setCellValue("E".$j,$v['編號']);
            $j++;
        }

        $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
        //文件保存路徑
        $path = $file . "/" . $filename . ".xls";
        $res = $objWriter->save($path);

        //把生成的Excel文件下載到本地
        header('Content-Description: File Transfer');
        header('Content-Type: application/octet-stream');
        header('Content-Disposition: attachment; filename='.mb_convert_encoding($filename.".xls","gb2312","utf-8"));  //轉換文件名的編碼
        header('Content-Transfer-Encoding: binary');
        header('Expires: 0');
        header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
        header('Pragma: public');
        header('Content-Length: ' . filesize($path));
        ob_clean();
        flush();
        readfile($path);
    }

數據在這裏只是模擬出來的。並不是從數據庫中得到的。同時把生成的Excel通過瀏覽器下載到本地。

生成的樣式

Test.php中的代碼:

<?php
/**
 * 測試Excel.class.php類
 * User: Administrator
 * Date: 2017/3/29 0029
 * Time: 16:19
 */
require_once "Excel.class.php";
$file = "D:/employee.xlsx";
$excel = new Excel();

//$excel -> setDataToDb($file);

$file = "D:";
$data = array(
    array("姓名" => "小明",'年齡' => 12,"電話" => "12345678910","地址" => "鄭州","編號" => 1254),
    array("姓名" => "小華",'年齡' => 13,"電話" => "12345678912","地址" => "鄭州","編號" => 1255),
    array("姓名" => "小張",'年齡' => 14,"電話" => "12345678913","地址" => "鄭州","編號" => 1256),
    array("姓名" => "小楊",'年齡' => 15,"電話" => "12345678918","地址" => "鄭州","編號" => 1257),
);
$excel -> getDataFromDb($file,'lijiafei',$data);

總結

上面只是PHPExcel最簡單的使用,PHPExcel還有很多功能可以使用,同時也可以操作多個Sheet,在這裏也只是操作了一個。可以自行百度。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章