thinkphp5中使用excel导出数据表格(包涵图片)
首先使用composer require phpoffice/phpexcel下载安装phpexcel包。
将包放入extend下面。
不附加图片的导出
/**
	 * 导出excel(不带图片)
	 * @param  string $fileName [description]
	 * @param  [type] $headArr  [description]
	 * @param  [type] $data     [description]
	 * @return [type]           [description]
	 */
	public function excelExport($fileName = '', $headArr = [], $data = []) {
$fileName .= "_" . date("Y_m_d", time()) . "_".time().".xls";
Loader::import("PHPExcel.Classes.PHPExcel");
        Loader::import("PHPExcel.Drawing");
$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++;
}
$fileName = iconv("utf-8", "gb2312", $fileName); // 重命名表
$objPHPExcel->setActiveSheetIndex(0); // 设置活动单指数到第一个表,所以Excel打开这是第一个表
header('Content-Type: application/vnd.ms-excel');
header("Content-Disposition: attachment;filename='$fileName'");
header('Cache-Control: max-age=0');
$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
//$objWriter->save('php://output'); // 文件通过浏览器下载
exit();
	}
控制器方法
public function dcexcel(){
        $name='物流信息表';
        $header=['商品编号','商品名称','库存数量','商品图'];
            /*需要哪张表的数据就查询哪张表的数据*/
        $list = db('goods')->limit(1)->select();
        $str = array();
        foreach ($list as $k => $v) {
            /*对应的数据库信息*/
            $str[] = [$v['good_sn'],$v['good_name'],$v['store_num'],$v['good_thumb']];
        }
        $data=$str;
$this->excelExport($name,$header,$data);
}
带图片的导出
/**
	 * 导出excel表格(带图片)
	 * @return [type] [description]
	 */
	function excel_down($data = []){
// 导出Exl
            Loader::import("PHPExcel.Classes.PHPExcel");
      		Loader::import("PHPExcel.Worksheet.Drawing");
$objPHPExcel = new \PHPExcel();
$objWriter = new \PHPExcel_Writer_Excel2007($objPHPExcel);
$objActSheet = $objPHPExcel->getActiveSheet();
// 水平居中(位置很重要,建议在最初始位置)
            $objPHPExcel->setActiveSheetIndex(0)->getStyle('A')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
            $objPHPExcel->setActiveSheetIndex(0)->getStyle('B')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
            $objPHPExcel->setActiveSheetIndex(0)->getStyle('C')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
            $objPHPExcel->setActiveSheetIndex(0)->getStyle('D')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
            $objPHPExcel->setActiveSheetIndex(0)->getStyle('E')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objActSheet->setCellValue('A1', 'good_sn');
            $objActSheet->setCellValue('B1', 'good_name');
            $objActSheet->setCellValue('C1', 'store_num');
            $objActSheet->setCellValue('D1', 'sales_sum');
            $objActSheet->setCellValue('E1', 'good_thumb');
// 设置个表格宽度
            $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(16);
            $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(15);
            $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(15);
            $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(20);
            $objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(12);
// 垂直居中
            $objPHPExcel->setActiveSheetIndex(0)->getStyle('A')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
            $objPHPExcel->setActiveSheetIndex(0)->getStyle('B')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
            $objPHPExcel->setActiveSheetIndex(0)->getStyle('C')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
            $objPHPExcel->setActiveSheetIndex(0)->getStyle('D')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
            $objPHPExcel->setActiveSheetIndex(0)->getStyle('E')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
foreach($data as $k=>$v){
                $k +=2;
                $objActSheet->setCellValue('A'.$k, $v['good_sn']);   
                $objActSheet->setCellValue('B'.$k, $v['good_name']);   
                $objActSheet->setCellValue('C'.$k, $v['store_num']);   
                $objActSheet->setCellValue('D'.$k, $v['sales_sum']);
//获取到图片信息   
                $img =db('goods')->where('good_id = '.$v['good_id'])->field('good_thumb')->find();
                // 图片生成
                $objDrawing[$k] = new \PHPExcel_Worksheet_Drawing();
                $objDrawing[$k]->setPath('./uploads/'.$img['good_thumb']);//这里拼接 . 是因为要在根目录下获取
                // 设置宽度高度
                $objDrawing[$k]->setHeight(80);//照片高度
                $objDrawing[$k]->setWidth(80); //照片宽度
                /*设置图片要插入的单元格*/
                $objDrawing[$k]->setCoordinates('E'.$k);
                // 图片偏移距离
                $objDrawing[$k]->setOffsetX(12);
                $objDrawing[$k]->setOffsetY(12);
                $objDrawing[$k]->setWorksheet($objPHPExcel->getActiveSheet());
// 表格高度
                $objActSheet->getRowDimension($k)->setRowHeight(80);
}
$fileName = 'duola物流信息表';
            $date = date("Y-m-d",time());
            $fileName .= "_{$date}.xls";
            $fileName = iconv("utf-8", "gb2312", $fileName);
            //重命名表
            // $objPHPExcel->getActiveSheet()->setTitle('test');
            //设置活动单指数到第一个表,所以Excel打开这是第一个表
            $objPHPExcel->setActiveSheetIndex(0);
            header('Content-Type: application/vnd.ms-excel');
            header("Content-Disposition: attachment;filename=\"$fileName\"");
            header('Cache-Control: max-age=0');
            $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
            $objWriter->save('php://output'); //文件通过浏览器下载
            // END   
    }
控制器使用
public function dcexcel(){
            /*需要哪张表的数据就查询哪张表的数据*/
        $list = db('goods')->limit(1)->select();
        $this->excel_down($list);
}
thinkphp5中使用excel导出数据表格(包涵图片)的更多相关文章
- vue2 Excel导出数据 js-xlsx的使用
		
vue2 Excel导出数据 js-xlsx的使用 https://www.jianshu.com/p/ea115a8e9107 小世界最温暖 关注 2018.11.19 16:08 字数 280 阅 ...
 - Excel向数据库插入数据和数据库向Excel导出数据
		
为了熟悉java里工作簿的相关知识点,所以找了“Excel向数据库插入数据和数据库向Excel导出数据”的功能来实现. 注意事项:1,mysql数据库: 2,需要导入的jar包有 jxl.jar,my ...
 - [js]EasyUI导出数据表格(Export DataGrid)
		
包括 'datagrid-export.js' 文件 <script type="text/javascript" src="datagrid-export.js& ...
 - ITextSharp导出PDF表格和图片(C#)
		
文章主要介绍使用ITextSharp导出PDF表格和图片的简单操作说明,以下为ITextSharp.dll下载链接 分享链接:http://pan.baidu.com/s/1nuc6glj 密码:3g ...
 - 通过Workbook类 生成Excel导出数据
		
需求: 实现错误信息生成Excel保存到本地让用户查看. 刚开始使用了微软自带的Microsoft.Office.Interop.Excel类库. Microsoft.Office.Interop.E ...
 - JAVA实现Excel导出数据(以写好的Excel模版导出)
		
工作中经常会有将后台数据以Excel导出的功能. 简单的方法有将response的contentType设置为application/vnd.ms-excel: 或在JSP页面直接设置成: <% ...
 - ASP.NET 导出数据表格
		
功能:可以实现导出整个数据表格或整个页面 public bool ExportGv(string fileType, string fileName) { bool ...
 - C#中Form窗体中读取EXCEL的数据
		
使用OLEDB可以对excel文件进行读取,我们只要把该excel文件作为数据源即可 首先引用Microsoft.EXEL 代码如下: using System; using System.Colle ...
 - Excel导出数据Excel.Application组件权限设置方法
		
很多网络应用系统都会涉及到数据采用Excel方式导出的模块,部分朋友问我到底怎么弄,其实方式很多种,目前比较优秀的方式还是直接用Excel的Excel.Application方式比较合适. 采用Exc ...
 
随机推荐
- Eclipse 使用 VS Emulator for android 调试环境配置 步骤
			
模拟器启动器地址:C:\Program Files (x86)\Microsoft Emulator Manager\1.0\emulatorcmd.exe 获取模拟器ID命令:emulatorcmd ...
 - Vue创建头部组件示例
			
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <meta ht ...
 - JVMj机制
 - 1.1.18 Word里将“字体加红”自定义为快捷方式
			
1.单击[文件]>[选项]: 2.选择[自定义功能区],单击[键盘快捷方式]旁的[自定义]: 3.在[类别]菜单中选择[开始选项卡]:在[命令]菜单中选择[FontColorPicker] (或 ...
 - python中list列表的方法len()
			
作用:返回列表中元素的个数. 用法: len(list)
 - spring找不到bean
			
有时候明明有bean,spring找不到bean,这时候需要mvn clean下,有时候xml文件不会每次都编译,改了不clean可能不会生效.
 - [ZZ] 麻省理工( MIT)大神解说数学体系
			
麻省理工( MIT)大神解说数学体系 http://blog.sina.com.cn/s/blog_5ff4fb7b0102e3p6.html 其实每一门学科都应该在学习完成后,在脑子里面有一个体系, ...
 - caffe-windows环境配置(github上官方BVLC/caffe的推荐配置方法详解)
			
[转载来的文章:如有侵权,请联系我!我将马上删除!] 首先声明一下,如标题,本教程是caffe在windows系统上的配置方法,而且是github上官方BVLC/caffe目前推荐的配置方法,并不是使 ...
 - 自己动手,丰衣足食!Python3网络爬虫实战案例
			
本教程是崔大大的爬虫实战教程的笔记:网易云课堂 Python3+Pip环境配置 Windows下安装Python: http://www.cnblogs.com/0bug/p/8228378.html ...
 - 20165312 2017-2018-2 《JAVA程序设计》第3周学习总结
			
20165312 2017-2018-2 <JAVA程序设计>第3周学习总结 一.第四章知识点总结 1.类 类的实现包括两个部分:类声明和类体. class是关键字,用来定义类. clas ...