根据excel模板导出
我要导出这个表格,导出到excel,怎么做?先创建一个模板,如下
模板如下
在里面设置好单元格的样式,这样就不用我们在代码中设置样式了,很方便
有个地方要注意,我们的模板中的商品只有一行,但是导出的时候有可能会有多个产品的,所以这里我们要插入新行,如下
但是这样的话,导出的效果如下
我们只是创建了一个新行,还没有对单元格就行合并,我们还要合并这些单元格,如下
可以了,但是内容没有自动换行,我们直接在模板中设置自动换行,如下
再来看看效果,发现还是不行,我们再来设置顶部对齐看看,如下
再来看看效果,如下
还是不行,可能是新插入的行,没有这个样式,我们就代码中设置样式,如下
再来看看效果, 如下
看,可以了,产品名称完整显示出来了,自动换行了
我们设置产品名称顶部向左对齐,如下
$excel->getActiveSheet()->getStyle('D'.$ind)->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_TOP)->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
再来看看效果,如下
看,可以
其实可以合并为一行,如下
最后导出代码如下
set_time_limit(0);ini_set('memory_limit', '512M');$fill_array = array('fill' => array('type' => \PHPExcel_Style_Fill::FILL_SOLID,'color' => array('rgb' => 'FFFFFF')));$excel = \PHPExcel_IOFactory::load(public_path().'/excel_template/purchase_explorer_template.xlsx');$excel->setActiveSheetIndex(0);$excel->getActiveSheet()->setCellValue('I1', '采购单号:'.$purchase_num);$excel->getActiveSheet()->setCellValue('I2', '创建时间:'.$create_time);$excel->getActiveSheet()->setCellValue('I3', '采购员:'.$creator);$excel->getActiveSheet()->setCellValue('A3', $purchase_num);$excel->getActiveSheet()->setCellValue('E3', $company_name);if(file_exists($img_url)){$objDrawing = new \PHPExcel_Worksheet_Drawing();$objDrawing->setPath($img_url);$objDrawing->setHeight(85);$objDrawing->setWidth(300);$objDrawing->setCoordinates('A1');$excel->getActiveSheet()->getStyle('A1')->applyFromArray($fill_array);$objDrawing->setOffsetX(18);//偏移量$objDrawing->setOffsetY(18);$objDrawing->setRotation(15);$objDrawing->getShadow()->setVisible(true);$objDrawing->getShadow()->setDirection(36);$objDrawing->setWorksheet($excel->getActiveSheet());//$sheet为当前工作表$excel->getActiveSheet()->getRowDimension(1)->setRowHeight(80);}$excel->getActiveSheet()->setCellValue('A4', '采购方:'.$company_name);$excel->getActiveSheet()->setCellValue('A5', '联系人:'.$contact);$excel->getActiveSheet()->setCellValue('A6', '电话:');$excel->getActiveSheet()->setCellValue('G4', '供货方:'.$supplier_name);$excel->getActiveSheet()->setCellValue('G5', '联系人:'.$supply_contact);$excel->getActiveSheet()->setCellValue('G6', '电话:'.$tel);$excel->getActiveSheet()->setCellValue('G7', '地址:'.$address);$excel->getActiveSheet()->setCellValue('A8', '订单交期:'.$eta);/*$excel->getActiveSheet()->setCellValue('B13', $excel_data['fba_ticket']['amazon_fbaid']);$excel->getActiveSheet()->setCellValue('G8', (isset($excel_data['company_tax_number']['eori']) ?' '.$excel_data['company_tax_number']['eori'] :''));$excel->getActiveSheet()->setCellValue('G9', (isset($excel_data['company_tax_number']['eori']) ? $excel_data['company_tax_number']['eori'] : ''));*/$ind = 10;foreach($purchase_info->goods_info as $k=>$v){$excel->getActiveSheet()->insertNewRowBefore($ind,1); //在操作行的号前加一空行,这空行的行号就变成了当前的行号$excel->getActiveSheet()->mergeCells('B'.$ind.':C'.$ind);$excel->getActiveSheet()->mergeCells('D'.$ind.':E'.$ind);$excel->getActiveSheet()->mergeCells('I'.$ind.':L'.$ind);$excel->getActiveSheet()->getStyle('D'.$ind)->getAlignment()->setWrapText(true)->setVertical(\PHPExcel_Style_Alignment::VERTICAL_TOP)->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_LEFT);$excel->getActiveSheet()->getStyle('I'.$ind)->getAlignment()->setWrapText(true)->setVertical(\PHPExcel_Style_Alignment::VERTICAL_TOP)->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_LEFT);$good_img_url = get_good_info_by_sku($v->sku,'image');$excel->getActiveSheet()->setCellValue('A'.$ind, ($k+1));$excel->getActiveSheet()->setCellValue('B'.$ind, $v->sku);//插入图片if(strtolower(substr($good_img_url, 0, 4)) != 'http'){ //本地图片$url = public_path('/storage/'.$good_img_url);if(file_exists($url)){$objDrawing = new \PHPExcel_Worksheet_Drawing();$objDrawing->setPath($url);$objDrawing->setHeight(60);$objDrawing->setWidth(60);$objDrawing->setCoordinates('B'.$ind);$excel->getActiveSheet()->getStyle('B'.$ind)->applyFromArray($fill_array);$objDrawing->setOffsetX(8);//偏移量$objDrawing->setOffsetY(8);$objDrawing->setRotation(15);$objDrawing->getShadow()->setVisible(true);$objDrawing->getShadow()->setDirection(36);$objDrawing->setWorksheet($excel->getActiveSheet());//$sheet为当前工作表$excel->getActiveSheet()->getRowDimension($ind)->setRowHeight(80);}}else{//网络图片$objDrawing = new \PHPExcel_Worksheet_MemoryDrawing();$img_res = getimagesize($good_img_url);//$extension = pathinfo($v['image'],PATHINFO_EXTENSION);$extension = substr($img_res['mime'],strripos($img_res['mime'],"/")+1);$img = false;if(strtolower($extension) == 'jpg' || strtolower($extension) == 'jpeg'){$img = @imagecreatefromjpeg($good_img_url);}elseif(strtolower($extension) == 'png'){$img = @imagecreatefrompng($good_img_url);}elseif(strtolower($extension) == 'gif'){$img = @imagecreatefromgif($good_img_url);}if($img !== false){$objDrawing->setImageResource($img);$objDrawing->setRenderingFunction(\PHPExcel_Worksheet_MemoryDrawing::RENDERING_DEFAULT);//渲染方法$objDrawing->setMimeType(\PHPExcel_Worksheet_MemoryDrawing::MIMETYPE_DEFAULT);$objDrawing->setHeight(60);//照片高度$objDrawing->setWidth(60); //照片宽度$objDrawing->setCoordinates('B'.$ind);$excel->getActiveSheet()->getStyle('B'.$ind)->applyFromArray($fill_array);$objDrawing->setOffsetX(8);$objDrawing->setOffsetY(8);$objDrawing->setWorksheet($excel->getActiveSheet());$excel->getActiveSheet()->getRowDimension($ind)->setRowHeight(80);}}$excel->getActiveSheet()->setCellValue('D'.$ind, get_good_info_by_sku($v->sku,'name_cn'));$excel->getActiveSheet()->setCellValue('F'.$ind, $v->num);$excel->getActiveSheet()->setCellValue('G'.$ind, $v->price);$excel->getActiveSheet()->setCellValue('H'.$ind, bcmul($v->num,$v->price,4));$excel->getActiveSheet()->setCellValue('I'.$ind, $v->remark);$ind++;}$excel->getActiveSheet()->setCellValue('A'.($ind+1), '合计体积:'.$area.'m³');$excel->getActiveSheet()->setCellValue('G'.($ind+1), '合计重量:'.$weight.'kg');$excel->getActiveSheet()->setCellValue('A'.($ind+2), '运费:'.$freight);$excel->getActiveSheet()->setCellValue('G'.($ind+2), '支付方式:'.$pay_method);$excel->getActiveSheet()->setCellValue('A'.($ind+3), '订单总金额(大写):'.$total_money);$excel->getActiveSheet()->setCellValue('G'.($ind+3), '订单总金额(小写):'.$total_money_for_num.'RMB');$excel->getActiveSheet()->setCellValue('A'.($ind+4), strip_tags($remark));ob_end_clean();//清除缓冲区,避免乱码header('Content-Type: application/vnd.ms-excel');header('Content-Disposition: attachment;filename="'.$purchase_num.'.xls"');header('Cache-Control: max-age=0');// 如果是在ie9浏览器下,需要用到这个header('Cache-Control: max-age=1');// 如果你是在ie浏览器或者https下,需要用到这个header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the pastheader('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); // always modifiedheader('Cache-Control: cache, must-revalidate'); // HTTP/1.1header('Pragma: public'); // HTTP/1.0$objWriter = new \PHPExcel_Writer_Excel5($excel);$objWriter->save('php://output');exit;
多出一行,怎么删除?如果我们立即删除的话,如下
看看效果, 如下
没有删除,我们把那个删除语句放在后面就行了,如下
放到下面一点,不要立即删除,放在后面一点,如下
再来导出看看,如下
看,删除了,可以,把那个删除语句放到后面一点就行了,哈哈哈
根据excel模板导出相关推荐
- .Net NPOI 根据excel模板导出excel、直接生成excel
一.根据Excel模板导出excel 1.导入NPOI.dll 2.DAL中添加类ExportExcel.cs using NPOI.SS.UserModel; using System; usin ...
- Excel模板导出之动态导出
说明 目前Magicodes.IE已支持Excel模板导出时使用JObject.Dictionary和ExpandoObject来进行动态导出,具体使用请看本篇教程. 本功能的想法.部分实现初步源于a ...
- Excel模板导出之导出教材订购表
说明 本教程主要说明如果使用Magicodes.IE.Excel完成教材订购表的Excel模板导出. 要点 本教程使用Magicodes.IE.Excel来完成Excel模板导出 需要通过创建Dto来 ...
- 6、jeecg 笔记之 自定义excel 模板导出(一)
6.jeecg 笔记之 自定义excel 模板导出(一) 1.前言 jeecg 中已经自带 excel 的导出导出功能,其所使用的是 easypoi,尽管所导出的 excel 能满足大部分需求, 但总 ...
- 基于Excel模板导出——ExcelTemplate
什么是ExcelTemplate ExcelTemplate项目是一个基于Excel模板,依靠配置文件描述导出过程的Excel导出工具. 它提供了大量适用于各种场景的常用配置(导出规则),同时提供一些 ...
- 使用EasyPoi利用excel模板导出excel表格下载
前言:使用excel模板导出excel的好处在于可以事先在模板上定义颜色.格式等,适用于模板设计得比较灵活复杂的场景 一.添加jar包 <dependency><groupId> ...
- springboot+poi开发excel导出 加载Excel模板导出 Excel批量导出详解
提到Excel导出功能,可能很多人都使用springmvc框架做过,笔者今天要给大家分享的是基于springBoot开发Excel复杂模板导出功能(所谓复杂模板指在模板里的特定表头里有不同的单元格合并 ...
- php excel模板导出、openoffice excel转pdf、多文件压缩下载
最近两周都在弄关于excel模板导出.excel转pdf.多文件压缩下载.弄得头都大了,接下来说说实现的方法吧. 我用的是laravel5.1的框架,读取模板生成excel,并且插入图片,直接上代码 ...
- C#中通过Excel模板导出数据
一.实现效果 1.1.编写特定格式的Excel模板 1.2.调用Excel模板导出数据 二.实现核心 #region 通过模板导出Excel文件/// <summary>/// 通过模板导 ...
- java通过Excel 模板导出复杂统计类excel文档,在ruoyi前后端分离框架中的应用
Hello, 大家好! 我是不作死就不会死,智商不在线,但颜值超有品的拆家队大队长 --咖啡汪 一只不是在戏精,就是在戏精路上的极品二哈 前几天刚做了java通过Excel 模板导出复杂统计类exce ...
最新文章
- python 语音websocket_Python 牺牲性能以提升程序员的工作效率
- 数据结构-王道2017-第3章 栈和队列-队列
- excel模糊匹配两列文字_Excel快速画出美观饼图
- ARC-060C - Tak and Cards - 动态规划
- c++ *.h和*.cpp在编译中的作用
- PHP的ob输出缓冲函数作用
- 如何通过销售发票和日记帐事务信息进行销售交货与退货信息分析
- 数组的几种定义方式及初始化
- 用python海龟制图画花瓣_Python教程:使用Turtles画出带有花瓣的花
- 第4章 类与对象 枚举类
- 计算机课件制作,多媒体课件制作photoshop和powerpoint教案
- python可以ps吗_Python功能确实非常强大!不止PS可以美化照片Python也可以!满分...
- 语音压缩:压缩率和比特率
- twilio php 发送短信,如何使用 Twilio 实现语音和短信功能 (PHP) | Microsoft Docs
- Redis——有时候expire比exists更好用
- stream流、数学类、String类的常用方法、date、密码等
- gcc生成静态库.a和动态库.a以及Ubuntu18.04下opencv3.4.11安装及示例
- 计算机无法访问iTunes,iPhone连接电脑后iTunes无响应怎么办【解决方法】
- Windows无法格式化改卷,改卷已脱机, 请尝试首先向改卷分配驱动器号或路径使其联机
- 【LaTex的PPT模板集】- (亲测有效)在线PPT模板及其使用方法,overleaf与TeXstudio支持中文方法