穿插一段:PHPExcel
认识一人问我
phpExcel 执行时出现各种问题 要不就是空的,要不就是浏览器一直刷新,要不就是出现部分数据,有部分数据出不来;
经过排查--发现是数据太多的问题 ------执行2万多条数据时-----出现问题------limit5000就没问题---
后来 增大执行时间解决了
有遇见的可以朝这个思路去解决下。
thinkphp 整合PHPword(PHPword.php和PHPword文件夹放在了PHPword文件夹下;然后把最外边这个PHPword文件放在thinkphp vendor文件夹下 tp3.2)
<?php
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’的替换;
额。。。如果再有问题 会继续记录