我的编程空间,编程开发者的网络收藏夹
学习永远不晚

ThinkPHP5使用PHPExcel导出excel数据表(显示图片,附带解析)

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

ThinkPHP5使用PHPExcel导出excel数据表(显示图片,附带解析)

PHPExcel下载以及示例

PHPExcel下载地址:    

        https://github.com/PHPOffice/PHPExcel

下载完后解压目录如下(classes文件夹是我们所需要的)

        Classes目录下是PHPExcel的源代码文件:PHPExcel.php文件是类库的接口,外部的PHP代码通过它来实现对PHPExcel的调用;PHPExcel目录下是各种不同文档(如Excel、Excel2007、PDF等)的读取和生成的具体操作代码,它们由Classes目录下的PHPExcel.php文件通过工厂模式统一进行调用。

        Documentation目录下是PHPExcel的官方帮助文档,尤其是API目录下网页文件全部是PHPExcel的API帮助文档,而其它的则是对这个开源项目的介绍。

        Examples目录下是PHPExcel的将近40个示例小程序,可以与Classes目录一同放到Apache+PHP环境下进行测试与学习。

 3.把classes文件夹改名为PHPExcel放入项目的vendor目录下(PHPExcel类库就扩展完成了)

 

 

然后需要的时候使用vendor进行导入

导出数据示例:

    public function outExcel(){        //1.清除缓冲区,避免乱码        //2.导入PHPExcel类库        //3.查询出数据库数据        //4.实例化PHPExcel对象        //5.设置sheet的名称,以及单元格字段信息        //6.设置内容        //7.通过PHPExcel_IOFactory的写函数将上面数据写出来        //8.设置表格文件的名称        //9.生成并下载表格        //====================================================                //1.清除缓冲区,避免乱码        ob_end_clean();        //2.导入PHPExcel类库        vendor("PHPExcel.PHPExcel");        vendor("PHPExcel.PHPExcel.IOFactory");        vendor("PHPExcel.PHPExcel.Writer.Excel2007");                //3.查询出数据库数据        $data = get_datalist('people');        //4.实例化PHPExcel对象                  $objPHPExcel = new \PHPExcel();//通过new关键字创建空白文档          $PHPWriter = new \PHPExcel_Writer_Excel2007($objPHPExcel);//用于2007版本格式                //5.设置sheet的名称,以及单元格字段信息        $objPHPExcel->getActiveSheet()->setTitle('test'); //获取当前的工作表并且设置工作表名称        $objPHPExcel->setActiveSheetIndex(0)//设置sheet(工作表)的起始位置为0            ->setCellValue('A1', 'ID编号')  //设置单元格字段信息            ->setCellValue('B1', '商品名称')            ->setCellValue('C1', '商品价钱');        //6.设置内容        $count = count($data);  //计算有多少条数据        //设置内容 i=2表示从第二段开始设值        for ($i = 2; $i <= $count + 1; $i++) {        //填入数据详情是这样的 A2,data[0]['Id'];            //                   A3,data[1]['id'];      以此类推            $objPHPExcel->getActiveSheet()->setCellValue('A' . $i, $data[$i - 2]['Id']);            $objPHPExcel->getActiveSheet()->setCellValue('B' . $i, $data[$i - 2]['name']);            $objPHPExcel->getActiveSheet()->setCellValue('C' . $i, $data[$i - 2]['headimg']);        }                //7.通过PHPExcel_IOFactory的写函数将上面数据写出来        $PHPWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, "Excel2007");                //8.设置表格文件的名称        $outputFileName = 'total.xls';        header("Content-Type: application/force-download");        header("Content-Type: application/octet-stream");        header("Content-Type: application/download");        header('Content-Disposition:inline;filename="' . $outputFileName . '"');        header("Content-Transfer-Encoding: binary");        header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");        header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");        header("Cache-Control: must-revalidate, post-check=0, pre-check=0");        header("Pragma: no-cache");        //9.生成并下载表格        $PHPWriter->save("php://output");    }

踩过的一些坑

    • 错误代码:$objPHPExcel->getActiveSheet()->setCellValue('A' . $i, $data[$i - 2]['id'])
    • 正确代码:$objPHPExcel->getActiveSheet()->setCellValue('A' . $i, $data[$i - 2]['Id'])
    • 数据库中Id首字母为大写,我取出时写为小写则报错

        使用vendor导入的对象实例化需要加"\" 

        例如:$objPHPExcel = new \PHPExcel();

导出数据加图片示例:

    public function outExcel(){        //1.清除缓冲区,避免乱码        //2.导入PHPExcel类库        //3.查询出数据库数据        //4.实例化PHPExcel对象        //5.设置sheet的名称,以及单元格字段信息        //6.设置内容(在此处添加导入图片的代码)        //7.通过PHPExcel_IOFactory的写函数将上面数据写出来        //8.设置表格文件的名称        //9.生成并下载表格        //====================================================                //1.清除缓冲区,避免乱码        ob_end_clean();        //2.导入PHPExcel类库        vendor("PHPExcel.PHPExcel");        vendor("PHPExcel.PHPExcel.IOFactory");        vendor("PHPExcel.PHPExcel.Writer.Excel2007");                //3.查询出数据库数据        $data = get_datalist('people');        //4.实例化PHPExcel对象        $objPHPExcel = new \PHPExcel();        $xlsWriter = new \PHPExcel_Writer_Excel5($objPHPExcel);//用其他版本格式        //5.设置当前sheet和单元格信息        $objPHPExcel->getActiveSheet()->setTitle('test'); //设置sheet名称        $objActSheet=$objPHPExcel->setActiveSheetIndex(0)//设置sheet的起始位置为0            ->setCellValue('A1', 'ID编号')  //设置单元格字段信息            ->setCellValue('B1', '姓名')            ->setCellValue('C1', '图片');        // 设置C列单元格宽度为15(用来放置图片)        $objActSheet->getColumnDimension("C")->setWidth(15); // 列宽                //6.设置内容        $count = count($data);  //计算有多少条数据        //设置内容 i=2表示从第二段开始设值        for ($i = 2; $i <= $count + 1; $i++) {        //填入数据详情是这样的 A2,data[0]['Id'];            //                   A3,data[1]['id'];      以此类推            $objPHPExcel->getActiveSheet()->setCellValue('A' . $i, $data[$i - 2]['Id']);            $objPHPExcel->getActiveSheet()->setCellValue('B' . $i, $data[$i - 2]['name']);            //$objPHPExcel->getActiveSheet()->setCellValue('C' . $i, $data[$i - 2]['headimg']);            //导入图片代码方法一:无法获取网络图片,只可导入本地图片!!!!!============                        // $objDrawing = new \PHPExcel_Worksheet_Drawing();//图片生成                        // //获取图片路径              // $objDrawing->setPath("本地图片路径");            // //设置宽度高度            // $objDrawing->setHeight(220);//照片高度            // $objDrawing->setWidth(220); //照片宽度            // //             // $objDrawing->setCoordinates('C' . $i);            // // 图片偏移距离            // $objDrawing->setOffsetX(0);            // $objDrawing->setOffsetY(0);            // $objDrawing->setWorksheet($objPHPExcel->getActiveSheet());                        //导入图片代码方法二 :可以导入网络图片========================            $objDrawing = new \PHPExcel_Worksheet_MemoryDrawing();            $imgPath = $data[$i - 2]['headimg'];//获取图片路径            // 截取图片的格式,用不同的方法            $end = substr($imgPath, -3);            if ($end == 'jpg' || $end == 'peg') {                $img = @imagecreatefromjpeg($imgPath);            }else if ($end == 'png') {                $img = @imagecreatefrompng($imgPath);            }else if ($end == 'gif') {                $img = @imagecreatefromgif($imgPath);            }            $objDrawing->setImageResource($img);//图片格式            $objDrawing->setRenderingFunction(\PHPExcel_Worksheet_MemoryDrawing::RENDERING_DEFAULT);//渲染方法            $objDrawing->setMimeType(\PHPExcel_Worksheet_MemoryDrawing::MIMETYPE_DEFAULT);                        $objDrawing->setHeight(100);//照片高度            $objDrawing->setWidth(100); //照片宽度            $objDrawing->setCoordinates('C' . $i);//图片要插入的单元格                        $objDrawing->setOffsetX(8);//图片X轴偏移            $objDrawing->setOffsetY(8);//图片Y轴偏移            $objDrawing->setWorksheet($objPHPExcel->getActiveSheet());            //设置每一行高度            $objActSheet->getRowDimension($i)->setRowHeight(100); // 行高          }        //7.通过PHPExcel_IOFactory的写函数将上面数据写出来        $xlsWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, "Excel2007");                //8.设置表格文件的名称        $outputFileName = 'total.xls';        header("Content-Type: application/force-download");        header("Content-Type: application/octet-stream");        header("Content-Type: application/download");        header('Content-Disposition:inline;filename="' . $outputFileName . '"');        header("Content-Transfer-Encoding: binary");        header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");        header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");        header("Cache-Control: must-revalidate, post-check=0, pre-check=0");        header("Pragma: no-cache");        //9.生成并下载表格        $xlsWriter->save("php://output");    }

附上PHPExcel一些常用的代码段:

// 通常PHPExcel对象有两种实例化的方式  // 1. 通过new关键字创建空白文档  $phpexcel = new PHPExcel();    // 2. 通过读取已有的模板创建  $phpexcel = PHPExcel_IOFactory::createReader("Excel5")->load("template.xls");      // 设置文档属性  $phpexcel->getProperties()->setCreator("Liu Jian") // 文档作者->setLastModifiedBy("Liu Jian") // 最后一次修改者->setTitle("Office 2003 XLS Test Document") // 标题->setSubject("Office 2003 XLS Test Document") // 主题->setDescription("Test document for Office 2003 XLS, generated using PHPExcel.") // 备注->setKeywords("office 2003 openxml php") // 关键字->setCategory("Test result file"); // 类别  // 默认状态下,新创建的空白文档(通过new)只有一个工作表(sheet),且它的编号(index)为0  // 可以通过如下的方式添加新的工作表  $phpexcel->createSheet(1);    // 获取已有编号的工作表  $sheet = $phpexcel->getSheet(1);    // 设置当前激活的工作表编号  $phpexcel->setActiveSheetIndex(1);    // 获取当前激活的工作表  $sheet = $phpexcel->getActiveSheet();    // 得到工作表之后就可以操作它的单元格以修改数据了  // 修改工作表的名称  $sheet->setTitle("Test");    // 设置单元格A5的值  $sheet->setCellValue("A5", date('Y-m-d h:i:s'));    // 设置第3行第5列(E3)的值  $sheet->setCellValueByColumnAndRow(4, 3, date('Y-m-d h:i:s'));    // 获取单元格A5的值  $sheet->getCell("A5")->getValue();    // 合并单元格  $sheet->mergeCells("C3:G6");    // 拆分合并的单元格  $sheet->unmergeCells("C3:G6");    // 设置第3行的属性  $sheet->getRowDimension(3)->setRowHeight(100) // 行高->setVisible(true) // 是否可见,默认为true ->setRowIndex(6) // 变更行号为6->setOutlineLevel(5); // 优先级别,默认为0,参数必须是0到7    // 设置第F列的属性  // getColumnDimension("F")可以用getColumnDimensionByColumn(5)代替  $sheet->getColumnDimension("F")->setWidth(200) // 列宽     ->setColumnIndex("I") // 变更列号为I     ->setVisible(false) // 是否可见     ->setAutoSize(true); // 自动适应列宽                // 在第3行前面插入1行,该行将变成新的第3行,其它的依次下移1行  $sheet->insertNewRowBefore(3, 1);    // 在第C行前面插入1列,该列将变成新的第C列,其它的依次右移1列  $sheet->insertNewColumnBefore("C", 1); // 方法一  $sheet->insertNewColumnBeforeByIndex(2, 1); // 方法二,第C列又是第2列    // 获取单元格D3的样式对象  $style = $sheet->getStyle("D3"); // 等价于getStyleByColumnAndRow(3, 3)    // 设置该单元格的字体属性  $style->getFont()->setBold(true) // 是否粗体                   ->setSize(16) // 字号                   ->setName("Gungsuh") // 字体名,只适用于外文字体                   ->setItalic(true) // 是否斜体                   ->setStrikethrough(true) // 是否有删除线                   ->setUnderline(PHPExcel_Style_Font::UNDERLINE_DOUBLEACCOUNTING) // 下划线类型                   ->getColor()->setARGB(PHPExcel_Style_Color::COLOR_BLUE); // 字体颜色                     // 设置该单元格的背景填充属性  $style->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID) // 填充模式                   ->getStartColor()->setARGB(PHPExcel_Style_Color::COLOR_YELLOW); // 背景颜色    // 设置该单元格中数字的格式  $style->getNumberFormat()->setFormatCode("0.00");    // 设置该单元格中文本对齐方式  $style->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER) // 水平方向                        ->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER); // 垂直方向    $sheet->setCellValue("D3", "12.3456");    // 在本地保存文档  PHPExcel_IOFactory::createWriter($phpexcel, 'Excel5')->save("output.xls");    // 输出文档到页面  header('Content-Type: application/vnd.ms-excel');  header('Content-Disposition: attachment;filename="test.xls"');  header('Cache-Control: max-age=0');  PHPExcel_IOFactory::createWriter($phpexcel, 'Excel5')->save('php://output');  

来源地址:https://blog.csdn.net/m0_61814817/article/details/127276294

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

ThinkPHP5使用PHPExcel导出excel数据表(显示图片,附带解析)

下载Word文档到电脑,方便收藏和打印~

下载Word文档

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录