当前位置:首页 > PHP教程 > php应用 > 列表

PHPExcel笔记, mpdf导出

发布:smiling 来源: PHP粉丝网  添加日期:2021-07-31 20:35:59 浏览: 评论:0 

这篇文章主要介绍了PHPExcel笔记, mpdf导出,需要的朋友可以参考下

phpexcel常用处理

  1. ##导入类库 
  2. require 'PHPExcel/Classes/PHPExcel.php'
  3. require 'PHPExcel/Classes/PHPExcel/Writer/Excel5.php'//非07格式的写出类 
  4.    
  5. ##基础属性设定 
  6. $objPHPExcel = \PHPExcel_IOFactory::load('a.xls'); //读入指定excel文件 
  7. $objPHPExcel->setActiveSheetIndex(0); //指定活动工作表 
  8. $objPHPExcel->getActiveSheet()->getDefaultStyle()->getFont()->setName('宋体'); 
  9. $objPHPExcel->getProperties()->setTitle('xxx'); 
  10.    
  11. ##单元格编辑 
  12. $objPHPExcel->getActiveSheet()->setCellValue('A3''xxx'); //设定A3单元格值为xxx 
  13.    
  14. ##单元格绘图 
  15. $objDrawing = new \PHPExcel_Worksheet_Drawing(); 
  16. $objDrawing->setPath('a.jpg'); //指定图片路径。若要远程图片需PHPExcel/Classes/PHPExcel/Worksheet/Drawing.php:106处file_exists换成file_get_contents 
  17. $objDrawing->setCoordinates('A4'); //指定在A4单元格绘图 
  18. $objDrawing->setName('Photo'); 
  19. $objDrawing->setDescription('Photo'); 
  20. $objDrawing->setHeight(120); 
  21. $objDrawing->setWidth(100); 
  22. $objDrawing->setOffsetX(7); 
  23. $objDrawing->setOffsetY(7); 
  24. $objDrawing->setWorksheet($objPHPExcel->getActiveSheet()); 
  25.    
  26. ##excel文件浏览器下载导出 
  27. $filename='a.xls'
  28. $encoded_filename = rawurlencode($filename); 
  29. $ua = $_SERVER["HTTP_USER_AGENT"]; 
  30. header('Content-type: application/vnd.ms-excel'); 
  31. if (preg_match("/MSIE/"$ua) || preg_match("/Trident\/7.0/"$ua) || preg_match("/Edge/"$ua)) { 
  32.   header('Content-Disposition: attachment; filename="' . $encoded_filename . '"'); 
  33. else if (preg_match("/Firefox/"$ua)) { 
  34.   header("Content-Disposition: attachment; filename*=\"utf8''" . $filename . '"'); 
  35. else { 
  36.   header('Content-Disposition: attachment; filename="' . $filename . '"'); 
  37. header("Pragma:no-cache"); 
  38. header("Expires:0"); 
  39. $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel'Excel5'); 
  40. $objWriter->save('php://output'); 
  41.    
  42. ##excel文件html显示(可用于调试) 
  43. $objWriter = new \PHPExcel_Writer_HTML($objPHPExcel); 
  44. $objWriter->save('php://output'); 

利用mpdf库从phpexcel导出pdf文件

  1. $filename='a.pdf'
  2. $encoded_filename = rawurlencode($filename); 
  3. $rendererName = \PHPExcel_Settings::PDF_RENDERER_MPDF; //指定通过mpdf类库导出pdf文件 
  4. $rendererLibraryPath = 'PHPExcel/MPDF57'//指定你下载的mpdf类库路径 
  5. if (!\PHPExcel_Settings::setPdfRenderer( 
  6.   $rendererName
  7.   $rendererLibraryPath 
  8. )) { 
  9.   die
  10.     'Please set the $rendererName and $rendererLibraryPath values' . 
  11.     PHP_EOL . 
  12.     ' as appropriate for your directory structure' 
  13.   ); 
  14. header('Content-type: application/pdf'); 
  15. if (preg_match("/MSIE/"$ua) || preg_match("/Trident\/7.0/"$ua) || preg_match("/Edge/"$ua)) { 
  16.   header('Content-Disposition: attachment; filename="' . $encoded_filename . '"'); 
  17. else if (preg_match("/Firefox/"$ua)) { 
  18.   header("Content-Disposition: attachment; filename*=\"utf8''" . $file_name . '"'); 
  19. else { 
  20.   header('Content-Disposition: attachment; filename="' . $file_name . '"'); 
  21. header("Pragma:no-cache"); 
  22. header("Expires:0"); 
  23. $objWriter = new \PHPExcel_Writer_PDF($objPHPExcel); 
  24. $objWriter->setPreCalculateFormulas(false); 
  25. $objWriter->save('php://output'); 

pdf导出失败的一些错误解决方法

1 pdf中文乱码问题

PHPExcel/Classes/PHPExcel/Writer/PDF/mPDF.php:105处加两行设定:

$pdf->useAdobeCJK = true;

$pdf->SetAutoFont(AUTOFONT_ALL);

2 类库里面多处preg_replace调用使用了元字符e,而部分低版本php不支持正则表达式e元字符

e元字符的不当使用并导致pdf报错的触发点在类库里面大概有五六处吧,

由于e元字符是一个shell下的子进程php调用,所以报错信息不会反馈到当前php进程中,故即便你配置了错误打印到屏幕, 页面也不会显示报错信息, 必须查看php报错日志

查看php报错日志,把提示的preg_replace中元字符e的调用替换为preg_replace_callback形式的调用

3 部分版本phpexcel类库有单元格样式判断错误

lib/PHPExcel/Classes/PHPExcel/Writer/HTML.php:1236处加个if判断

if (!$this->_useInlineCss) {

$cssClass .= ' style' . $pSheet->getCell($endCellCoord)->getXfIndex();

Tags: PHPExcel mpdf导出

分享到: