“最难不过坚持”
本人承接扒站仿站,php网站维护,病毒查杀,网站编辑,网站改版,html制作
有需要网站维护,改版,病毒查杀,网站编辑,网站备案,html制作等相关的工作可以联系我。
本人有多年相关工作经验,也可提供免费咨询,交个朋友。
有需要探讨问题的朋友,也可以加我微信,共同探讨!
微信:15011482830 QQ:408917339
- https://jueru.net/
-
评 留言
- :weixiao:
-
评 留言
- :shuijiao: :weiqu: :zhenbang: :leng:
-
评 留言
- :yiwen: :yiwen: :yiwen: :yiwen:
-
评 EasySass: could not generate CSS file. See Output panel for details.
- 这个业务逻辑多少都有点奇怪了,阅读浏览次数增值在新闻详情页的控制器方法里setInc,这怎么还写进模型事件里了。如果非要用onAfterRead也可以,把新闻文章的内容单独分出来一个news_content表,然后把它和news做关联,然后给news_content表的onAfterRead事件做增值处理,这样点进新闻页内查询到文章内容时才会触发它。
-
评 TP6模型事件-查询后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);
这段要注意,不然可能会出错