最新消息: 新版网站上线了!!!

thinkphp运用phpexcel导入导出数据

<?php
 
// +----------------------------------------------------------------------
// | Excel 导入导出
// +----------------------------------------------------------------------
// | Author: 胡力 <719907411@qq.com>
// +----------------------------------------------------------------------
 
class ExcelAction extends Action {
    /**
     * 导出数据为excel表格
     *@param $data    一个二维数组,结构如同从数据库查出来的数组
     *@param $excelFileName   excel文件名
     *@param $sheetTitle 表名
     *@examlpe 使用方法
    $stu = M ('User');
    $arr = $stu -> select();//获取数组
 
    //浏览器下载
    R("Excel/excel_export",
    array(
    $arr,           //数组
    '快递单',       //下载的名称
    '快递发送记录!'  //Excel工作表名
    )
    );
    //保存到本地
    R("Excel/excel_export",
    array(
    $arr,           //数组
    '快递单',        //保存的名称
    '快递发送记录!', //Excel工作表名
    '/EXCEL/'        //保存的路径 (不包括该文件)
    )
    );
     */
    function excel_export($data,$excelFileName,$sheetTitle,$savepath='')
    {
        /*
         * excel导出函数
         * $data为从数据库中获取到的数据
         * $excelFileName下载的excel的文件名称
         * $sheetTitle第一个工作区的名称
         *
        */
        /* 包含进phpexcel文件 */
        Vendor('Excel.Classes.PHPExcel');
        Vendor('Excel.Classes.PHPExcel.Writer.Excel2007');
        /* 实例化类 */
        $objPHPExcel = new PHPExcel();
        /* 设置输出的excel文件为2007兼容格式 */
        //$objWriter=new PHPExcel_Writer_Excel5($objPHPExcel);//非2007格式
        $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
        /* 设置当前的sheet */
        $objPHPExcel->setActiveSheetIndex(0);
        $objActSheet = $objPHPExcel->getActiveSheet();
        /* sheet标题 */
        $objActSheet->setTitle($sheetTitle);
        $i = 1;
        foreach($data as $value)
        {
            /* excel文件内容 */
            $j = 'A';
            foreach($value as $value2)
            {
                //            $value2=iconv("gbk","utf-8",$value2);
                $objActSheet->setCellValue($j.$i,$value2);
                $j++;
            }
            $i++;
        }
 
        if($savepath=="")//判断类型  ( 一种是保存在本地,一种是浏览器下载,默认是浏览器下载)
        {
            /* 生成到浏览器,提供下载 */
            header("Pragma: public");
            header("Expires: 0");
            header("Cache-Control:must-revalidate,post-check=0,pre-check=0");
            header("Content-Type:application/force-download");
            header("Content-Type:application/vnd.ms-execl");
            header("Content-Type:application/octet-stream");
            header("Content-Type:application/download");
            header('Content-Disposition:attachment;filename="'.$excelFileName.'.xlsx"');
            header("Content-Transfer-Encoding:binary");
            $objWriter->save('');
        }
        else
        {
            $objWriter->save(trim($savepath.$excelFileName.'.xlsx'));
            return TRUE;
        }
    }
 
    /**
     * 读excel表格
     *@param $path    excel文件的路径
     *@return array  返回数组
     *@examlpe  用法:  R("Excel/toarray",array("/快递单.xlsx"));
     */
    public function toarray($path='')
    {
        Vendor('Excel.Classes.PHPExcel');
        $objPHPExcel = PHPExcel_IOFactory::load($path);
        $arrExcel = $objPHPExcel->getSheet(0)->toArray();
        return $arrExcel;
    }
}
?>
 
 
 
    //在需要导出数据的地方直接调用该方法,由于是跨模块的调用,所以使用了Thinkphp框架中的R方法
<?php
R("Excel/excel_export",
    array
    (
        $list,//数组
        '快递单4',//保存的名称
        '快递发送记录4!',//Excel工作表名
        './test/'//保存的路径 (不包括该文件)
    )
?>

转载请注明:谷谷点程序 » thinkphp运用phpexcel导入导出数据