php excel文件导出之phpExcel扩展库

php Excel  文件导出

phpExcel 官网 http://phpexcel.codeplex.com/

/**
     * 导出特定文件
	 * 根据具体情况而定
     */
    public function download(){

        //1. 从数据库来获取对应的二维数组
        $alist = array(...);
        $list = $alist;
        $data = array();
		//2. 设置xls的 表头名
        $headArr = array("排名","姓名","手机","获奖","参与时间");
        if(false === empty($list)){
            $i=0;
            foreach ($list as $key => $val){
                //组装对应的单元格A,B,C,D。。。
				$data[$i] = array(
                       ($i+1),            //A
                       $val['name'],      //B
                       $val['tel'],       //C
                       $val['award'],     //D
                       ...
                    );
                 $i++;
            }
        }else{
            $data[0] = array('暂无相关记录!');
        }

        $fileName = "test-excel_";
        $this->explodexls($data,$headArr,$fileName);
    }

    /**
	 * 工具函数 处理 xls 文件导出
	 * @param $data array() 对应的tbody 数据
     * @param $headArr array() 对应的thead 数据
	 * @param $fileName string  指定的导出文件名
	 * @return xls格式 文件自动导出
     */
    public function explodexls($data,$headArr,$fileName){
		//注意这里换成对应的根目录 找到绝对路径
        $dir = __dir__.'/../../../../public';
        require_once $dir.'/excel/PHPExcel.php';
        require_once $dir.'/excel/PHPExcel/Writer/Excel2007.php';
        require_once $dir.'/excel/PHPExcel/Writer/Excel5.php';
        include_once $dir.'/excel/PHPExcel/IOFactory.php';

        if(empty($data) || !is_array($data)){
            die("data must be a array");
        }
        if(empty($fileName)){
            exit;
        }
        $date = date("Y_m_d",time());
        $fileName .= "_{$date}.xls";
        //创建新的PHPExcel对象
        $objPHPExcel = new PHPExcel();
        $objProps = $objPHPExcel->getProperties();
        //设置表头
        $key = ord("A");
        foreach($headArr as $v){
            $colum = chr($key);
            $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){// 列写入
                $j = chr($span);
                $objActSheet->setCellValue($j.$column, $value);
                $span++;
            }
            $column++;
        }
        //$fileName = iconv("utf-8", "gb2312", $fileName);
        //重命名表
        $objPHPExcel->getActiveSheet()->setTitle('Simple');
        //设置活动单指数到第一个表,所以Excel打开这是第一个表
        $objPHPExcel->setActiveSheetIndex(0);
        //将输出重定向到一个客户端web浏览器(Excel2007)
        header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
        header("Content-Disposition: attachment; filename=\"$fileName\"");
        header('Cache-Control: max-age=0');
        $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
        $objWriter->save('php://output'); //文件通过浏览器下载
        exit;
    }
时间: 2024-10-09 23:42:12

php excel文件导出之phpExcel扩展库的相关文章

一、【Spring Boot】 Excel文件导出下载

   Spring Boot Excel 文件导出 目标: 实现Excel文件的直接导出下载,后续开发不需要开发很多代码,直接继承已经写好的代码,增加一个Xml配置就可以直接导出. 实现: 1.抽象类 BaseExcelView 继承 webmvc 的 AbstractXlsxStreamingView 抽象类, AbstractXlsxStreamingView 是webmvc继承了最顶层View接口,是可以直接大量数据导出的不会造成内存泄漏问题,即 SXSSFWorkbook 解决了内存问题

ThinkPHP导入Excel文件(使用PHPExcel)

主要知识点,用PHPExcel导入Excel数据经过这几天测试还是可以,xls,xlsx都可以获取Excel的数据.下载地址:http://phpexcel.codeplex.com/ O.开发思路 1.先把Excel文件上传到服务器 2.获取服务器Excel文件内容 3.写入数据库 一.上传Excel文件,使用PHP里自带的上传方法 “\Think\Upload();”,可以很方便的实现.为此我整理下使用这个方法的最简单方式 /** * TODO 上传文件方法 * @param $fileid

Jmeter_实现Excel文件导出到本地

一般而言,对于页面的"导出"操作,主要经历如下两个操作:①根据数据库的内容,将文件导出到应用服务器上:②将服务器上的文件下载到本地电脑: Jmeter同LoadRunner类似,只能记录服务端与客户端之间的数据流转,而不能记录本地操作,因此对于含有导出功能的性能需求,将服务端的文件下载到本地电脑,需要我们手工加入代码实现(上面所述的步骤②). [1.导出请求分析]"导出"操作对应的两个请求如下: [2.获取文件的服务端路径] 在请求"97"下使用

NPOI读取excel文件导出数据, 而此时文件正在打开中抛异常怎么办

项目中需要用到一些数值表格, 方便起见都是用excel来的. 而如果excel正打开中, 直接使用npoi制作的工具来导出数据的话, 在这一行将会异常: workbook = new XSSFWorkbook(filepath); 其实只是读取的话, 并不需要获得它完整的使用权限, 那么用file.open然后再new workbook行不行? 也不行. 其实看那些excel其他软件的做法就很简单了, 首先执行一次copy string tmpFile = "~tooltmp.xlsx"

数据导出至Excel文件--好库编程网http://code1.okbase.net/codefile/SerializeHelper.cs_2012122018724_118.htm

using System; using System.IO; using System.Data; using System.Collections; using System.Data.OleDb; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; /// <summary> /// Excel操作类 /// </summary> /// Microsoft Excel 11.0 Obj

python进程间传递文件描述符扩展库

由于python本身的线程基本上比较残废,所以为了利用机器的cpu,就不得不用上多进程... 在游戏服务器的设计中,最为常见的方式是: 挂一个前端服务器,专门来维护与客户端的连接,然后将客户端的请求数据转发给后端服务器... 上面的方式是现在最为正统的... 但是自己因为环境的限制,需要做到对客户端透明,然后将后端的服务器转换成为多进程的...所以这里就只有用一点比较别扭的方法了,首先处理登录等一些常规的逻辑放在前端服务器,当进入放进进行匹配战斗之后,将客户端的socket连接直接交给后端服务器

Qt 导出EXCEL文件

QString fileName = QFileDialog::getSaveFileName(this, tr("Excel file"), qApp->applicationDirPath(),tr("Excel Files (*.xls)")); if (fileName.isEmpty()) return; if (excel(fileName))//调用导出Excel方法 { QMessageBox::about(this, QStringLiter

从后台获取数据导出excel文件

做oa系统的都会有这个要求:根据数据导入excel文件.只需要点击一下,你所需要的数据就直接生成一个excel文件了,是不是很方便? 是的没错,很方便,但是对于我们来说是一件很痛苦的事情,所以说一下我的经历.因为是第一次写excel文件导出,所以代码可能写的很烂,不喜勿喷. 有什么意见也可以直接留言哦,希望与大家一起交流 第一步,先在pom.xml文件依赖jar包: <!-- https://mvnrepository.com/artifact/org.apache.poi/poi --> &

SSM excel文件的导入导出

对于excel文件的导入导出,后台接收读取和建表封存都是固定死的,所以对于excel导入时,excel文件内容必须匹配后台相关对象,不然报错. excel文件导出,用<a><a/>标签即可,通过后台去完成 ,不可用ajax去写导出,ajax请求只是个"字符型"的请求,即请求的内容是以文本类型存放的. 文件的下载是以二进制形式进行的,ajax没法解析后台返回的文件流,所以无法处理二进制流response输出来下载文件. 当获取前台导入这个命令后,会通过Mybati