PHPExcel读取和导出

导出Excel

if (!function_exists('excel_export')) {
    /**
     * @param    string     $file_name 文件名称
     * @param    array      $headArr  表头名称
     * @param    array      $data     要导出的数据
     * @return   [type]               [description]
     */
    function excel_export($file_name = '', $headArr = [], $data = [])
    {
        import('PHPExcel', EXTEND_PATH);
        $file_name .= "_" . date("Y_m_d", request()->time()) . ".xls";
        $objPHPExcel = new \PHPExcel();
        $objPHPExcel->getProperties();
        $key = ord("A"); // 设置表头

        foreach ($headArr as $v) {
            $colum = chr($key);
            $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '1', $v);
            $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum . '1', $v);
            $key += 1;
        }

        $column = 2;
        $objActSheet = $objPHPExcel->getActiveSheet();

        foreach ($data as $key => $rows) { // 行写入
            $span = ord("A");
            foreach ($rows as $keyName => $value) { // 列写入
                $objActSheet->setCellValue(chr($span) . $column, $value);
                $span++;
            }
            $column++;
        }

        $file_name = iconv("utf-8", "gb2312", $file_name); // 重命名表
        $objPHPExcel->setActiveSheetIndex(0); // 设置活动单指数到第一个表,所以Excel打开这是第一个表
        header('Content-Type: application/vnd.ms-excel');
        header("Content-Disposition: attachment;filename='$file_name'");
        header('Cache-Control: max-age=0');
        $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
        $objWriter->save('php://output'); // 文件通过浏览器下载
        die;
    }
}

读取Excel

if (!function_exists('excel_reader')) {
    /**
     * @param    string     $file_name [description]
     * @return   [type]                [description]
     */
    function excel_reader($file_name = '')
    {
        $file_name = 'C:\Users\rongshenzhen\Desktop\aaa.xlsx';
        if (!file_exists($file_name)) die('文件'.$file_name.'不存在');
        import('PHPExcel', EXTEND_PATH);

        $extension = strtolower(pathinfo($file_name, PATHINFO_EXTENSION)); // 扩展名
        if ($extension == 'xlsx') {
            $objReader = new \PHPExcel_Reader_Excel2007();
        } else if ($extension == 'xls') {
            $objReader = new \PHPExcel_Reader_Excel5();
        } else if ($extension == 'csv') {
            $objReader = new \PHPExcel_Reader_CSV();
        }

        $objPHPExcel = $objReader->load($file_name);
        $sheets = $objReader->listWorksheetInfo($file_name); // 获取工作表的信息
        $data = array();

        foreach ($sheets as $key => $val) {
            // 总行数和总列数大于0
            if ($val['totalRows'] && $val['totalColumns']) {
                // 读取整张工作表
                $data[$key] = $objPHPExcel->getSheet($key)->toArray();
                // 读取范围
                // $data[$key] = $objPHPExcel->getSheet($key)->rangeToArray('A1:'.$val['lastColumnLetter'].$val['totalRows']);
            }
        }
        return $data;
    }
}

猜你喜欢

转载自blog.csdn.net/qq_27926653/article/details/86523616