“最难不过坚持”
本人承接扒站仿站,php网站维护,病毒查杀,网站编辑,网站改版,html制作
有需要网站维护,改版,病毒查杀,网站编辑,网站备案,html制作等相关的工作可以联系我。
本人有多年相关工作经验,也可提供免费咨询,交个朋友。
有需要探讨问题的朋友,也可以加我微信,共同探讨!
微信:15011482830 QQ:408917339
- https://jueru.net/
-
- :weixiao:
-
- :shuijiao: :weiqu: :zhenbang: :leng:
-
- :yiwen: :yiwen: :yiwen: :yiwen:
-
- 这个业务逻辑多少都有点奇怪了,阅读浏览次数增值在新闻详情页的控制器方法里setInc,这怎么还写进模型事件里了。如果非要用onAfterRead也可以,把新闻文章的内容单独分出来一个news_content表,然后把它和news做关联,然后给news_content表的onAfterRead事件做增值处理,这样点进新闻页内查询到文章内容时才会触发它。
-
做excel导出,下拉选项
thinkphp5,phpExcel导出,getDataValidation网页可能暂时无法连接,或者它已永久性地移动到了新网址。
这是为什么呢?也看不到具体错误。
1,首先要看到具体错误,使用$objWriter->save('1.xls');die;这种方法查看到具体错误
2,具体错误$options |= $errorStyle << 4;
3,搜索$options |= $errorStyle << 4;可以知道错误位置在extend\phpexcel\PHPExcel\Writer\Excel5\Worksheet.php 2869行
4,这是位运算,为什么会报错呢?不明白,把整个这一段注释掉,神奇的事情发生了,可以正常导出excel了
5,本来想就这样就可以了,但是忽然想看看echo $options; echo $errorStyle;die;到底是什么内容
然后导出到excel是
$options是3
$errorStyle是list
忽然意识到$errorStyle怎么可能是list呢?它只要3个值啊,stop,warning,information其中之一才对
然后就发现了
$errorStyle = $dataValidation->getType();
$errorStyle怎么获取的是type的值呢?
应该获取getErrorStyle();
才对啊。
改了之后果然没问题了
$errorStyle = $dataValidation->getErrorStyle();
不知道这个错误怎么出现的,网上别人复制的代码,也有这个问题。
附phpExcel导出,且有下拉选项,完整代码
$name = $name.date('YmdHis'); require \Env::get('root_path') . 'extend/phpexcel/PHPExcel.php'; $objPHPExcel = new \PHPExcel(); // 设置excel文档的属性 $objPHPExcel->getProperties() ->setCreator("zhtmall")//创建人 ->setLastModifiedBy("zhtmall")//最后修改人 ->setTitle($name)//标题 ->setSubject($name)//题目 ->setDescription($name)//描述 ->setKeywords($name)//关键字 ->setCategory($name);//种类 // 开始操作excel表 $objPHPExcel->setActiveSheetIndex(0); // 设置工作薄名称 $objPHPExcel->getActiveSheet()->setTitle(iconv('gbk', 'utf-8', 'Sheet')); // 设置默认字体和大小 $objPHPExcel->getDefaultStyle()->getFont()->setName(iconv('gbk', 'utf-8', '')); $objPHPExcel->getDefaultStyle()->getFont()->setSize(11); $styleArray = array( 'font' => array( 'bold' => true, 'color'=>array( 'argb' => 'ffffffff', ) ) ); //设置宽 $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(20); $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(20); $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(60); $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(30); $objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(30); $objRow = $objPHPExcel->getActiveSheet()->getStyle('A1:E1'); $objRow->getFill()->setFillType(\PHPExcel_Style_Fill::FILL_SOLID); $objRow->getFill()->getStartColor()->setRGB('666699'); $objRow->getAlignment()->setVertical(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objRow->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::VERTICAL_CENTER); $objPHPExcel->getDefaultStyle()->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->getDefaultStyle()->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER); $objPHPExcel->getActiveSheet()->getDefaultRowDimension()->setRowHeight(25); $objPHPExcel->getActiveSheet() ->setCellValue('A1', '订单编号') ->setCellValue('B1', '订单商品编号') ->setCellValue('C1', '商品名称') ->setCellValue('D1', '快递公司') ->setCellValue('E1', '快递单号'); $objPHPExcel->getActiveSheet()->getStyle('A1:E1')->applyFromArray($styleArray); for ($row = 0; $row < count($rs); $row++){ $i = $row+2; $objPHPExcel->getActiveSheet() ->setCellValue('A'.$i, $rs[$row]['orderNo']) ->setCellValue('B'.$i, $rs[$row]['id']) ->setCellValue('C'.$i, $rs[$row]['goodsTitle']); $objPHPExcel->getActiveSheet()->getStyle('C'.$i)->getAlignment()->setWrapText(true); $objPHPExcel->getActiveSheet()->getStyle('C'.$i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_LEFT); $objValidation = $objPHPExcel->getActiveSheet()->getCell('D'.$i)->getDataValidation(); $objValidation->setType(\PHPExcel_Cell_DataValidation::TYPE_LIST ) ->setErrorStyle(\PHPExcel_Cell_DataValidation::STYLE_STOP ) ->setAllowBlank(true) ->setShowInputMessage(true) ->setShowErrorMessage(true) ->setShowDropDown(true) ->setErrorTitle('输入的值有误') ->setError('您输入的值不在下拉框列表内.') ->setPromptTitle('') ->setPrompt('') ->setOperator(\PHPExcel_Cell_DataValidation::OPERATOR_BETWEEN) ->setFormula1('"' . implode(',',$shopExpressList) . '"'); } $objPHPExcel->getActiveSheet()->getStyle('A1:E'.(count($rs)+1))->applyFromArray(array( 'borders' => array ( 'allborders' => array ( 'style' => \PHPExcel_Style_Border::BORDER_THIN, //设置border样式 'color' => array ('argb' => 'FF000000'), //设置border颜色 ) ) )); $this->PHPExcelWriter($objPHPExcel,$name);这段要注意,不然可能会出错