thinkphp整合phpword

穿插一段:PHPExcel  

认识一人问我

phpExcel  执行时出现各种问题    要不就是空的,要不就是浏览器一直刷新,要不就是出现部分数据,有部分数据出不来;

经过排查--发现是数据太多的问题  ------执行2万多条数据时-----出现问题------limit5000就没问题---

 

后来 增大执行时间解决了 

thinkphp整合phpword_第1张图片  

有遇见的可以朝这个思路去解决下。

 

thinkphp 整合PHPword(PHPword.php和PHPword文件夹放在了PHPword文件夹下;然后把最外边这个PHPword文件放在thinkphp vendor文件夹下 tp3.2)

namespace Home\Controller;

use Think\Controller;

 

class IndexController extends Controller {

public function index(){

// 参数部分

$formNname = '测试form'; // form

$toName = '测试to'; // to

$tel = '测试电话'; // 电话

$fax = '测试传真号'; // 传真号

$faxes = '测试传真编码'; // 传真编码

$name = '王府井';// 景点名称

$userTime = '游客游玩时间'; // 游客游玩时间

$userName = '游客姓名'; // 游客姓名

$userNum = '测试2'; // 游客数量

$userTel = '游客电话'; // 游客电话

$userContent = '测试预定项目'; // 游客预定项目

$clearing = '测试结算方式'; // 结算方式

$rests = '测试其他'; // 其他

$html = "预订人: 景区确认: ";

$txt = '备注:';// 备注

// 引入部分

vendor("PHPWord");

require_cache(VENDOR_PATH.'PHPWord/PHPWord.php');

$PHPWord = new \PHPWord();

$section = $PHPWord->createSection();

$properties = $PHPWord->getProperties();

// 定义样式数组

$styleTable = array('borderSize'=>6, 'borderColor'=>'006699', 'cellMargin'=>80);

$styleFirstRow = array('borderBottomSize'=>18, 'borderBottomColor'=>'0000FF', 'bgColor'=>'66BBFF');

// 定义单元格样式数组

$styleCell = array('valign'=>'center');

$styleCellBTLR = array('valign'=>'center', 'textDirection'=>\PHPWord_Style_Cell::TEXT_DIR_BTLR);

// 定义第一行的字体

$fontStyle = array('bold'=>true, 'size'=>18, 'align'=>'center');

// 标题内容

//$PHPWord->addFontStyle('rStyle', array('bold'=>true, 'italic'=>true, 'size'=>80));

$PHPWord->addParagraphStyle('pStyle', array('align'=>'center', 'spaceAfter'=>100));

$section->addText($name."景点门票预订传真函", $fontStyle, 'pStyle');

// 添加表格样式

$PHPWord->addTableStyle('myOwnTableStyle', $styleTable, $styleFirstRow, $fontStyle);

// 添加表格

$table = $section->addTable('myOwnTableStyle');

$PHPWord->setDefaultFontName('宋体'); // 全局字体

$PHPWord->setDefaultFontSize(14); // 全局字号

// 内容开始

// 第一行

$table->addRow();

$table->addCell(3600)->addText("from:$formNname");

$table->addCell(2800)->addText("电话:$tel");

$table->addCell(2800)->addText("传真:$fax"); 

// 生成docx文档

$objWriter = \PHPWord_IOFactory::createWriter($PHPWord, 'Word2007');

$objWriter->save('abc.docx'); 

}

   

}

中文乱码支持的问题 百度下

基本上就是 把 base.php  section.php table.php 等几个php文件里的utf-8 encode改成 

中文编码()

注意如果还没解决,试下把控制器编码改成asni编码试下()

 

 

额,其实是帮同学整合的,后来小伙遇到一个奇葩问题,由于编码问题,他的换行有问题;

比如:‘备注:

                       (1)这是第一行;

                        (2)这是第二行’

他的内容需要拼接成这样;就需要换行;结果他的换行不识别;

我在这里找到答案;

http://www.phpddt.com/php/phpword-cell-newline.html

其实就是‘\n’的替换;

 

额。。。如果再有问题  会继续记录

 

转载于:https://my.oschina.net/u/3255899/blog/856497

你可能感兴趣的:(thinkphp整合phpword)