1. 在laravel 项目根目录地下 执行命令 composer require phpoffice
/phpword
安装phpword
2.2 在控制器中引入
use PhpOffice\PhpWord\PhpWord;
3.
$phpword = new PHPWord(); //实例化phpword类
$fontStyle2 = array('align'=>'center'); //整体样式
$section = $phpword->addSection(); //整体页面
$phpword->addTitleStyle(1, ['bold' => true, 'color' => '000', 'size' => 17, 'name' => '宋体'],$fontStyle2); //设置title样式
$section->addTitle("中共西安市委组织“12380”网上举报信息登记表"); //添加标题
$num = date('Ymd',$data->add_time);
if(mb_strlen($data -> id) == 1){
$a = $num .'00'.$data -> id;
}else{
$a = $num .'0'.$data -> id;
}
$time = date('Y-m-d',$data->add_time);
$section->addText("编号:$a
举报日期:$time"); //添加文本
$styleTable = [
'borderColor' => '006699',
'borderSize' => 6,
'cellMargin' => 50,
]; //设置表格样式
$cellRowSpan = array('vMerge' => 'restart', 'valign' => 'center'); // 设置可跨行,且文字在居中
$cellRowContinue = array('vMerge' => 'continue'); //使行连接,且无边框线
$cellColSpan = array('gridSpan' => 3, 'valign' => 'center'); //设置跨列
$cellColSpans = array('gridSpan' => 4, 'valign' => 'center'); //设置跨列
$cellHCentered = array('align' => 'center'); //居中
$cellVCentered = array('valign' => 'center'); //居中
$styleFoun = array('name' => '宋体','size'=> 13);
$styleFouns = array('name' => '黑体','size'=> 13);
$phpword->addTableStyle('myTable', $styleTable);
$table = $section->addTable('myTable');
//第一行
$table->addRow(500); //添加一行
$table->addCell(5000, $cellRowSpan)->addText('举报人',
$styleFoun, $cellHCentered); //设置该列可以跨行,且样式居中
$table->addCell(5000,$cellVCentered)->addText("姓名",$styleFoun,$cellHCentered);
$uname = $data -> uname;
$table->addCell(5000,$cellVCentered)->addText("$uname",$styleFouns,$cellHCentered);
$table->addCell(5000,$cellVCentered)->addText('性别',$styleFoun,$cellHCentered);
if($data -> usex == 1){
$usex = '男';
}else if($data -> usex == 2){
$usex = '女';
}else{
$usex = '';
}
$table->addCell(5000,$cellVCentered)->addText("$usex",$styleFouns,$cellHCentered);
//第二行
$table->addRow(500);
$table->addCell(null, $cellRowContinue);
$uunit = $data -> uunit;
$table->addCell(5000,$cellVCentered)->addText("单位",$styleFoun,$cellHCentered);
$table->addCell(5000,$cellColSpan)->addText("$uunit",$styleFouns,$cellHCentered);
//第三行
$table->addRow(500);
$table->addCell(null, $cellRowContinue);
$ujob =$data -> ujob;
$table->addCell(5000,$cellVCentered)->addText("职务",$styleFoun,$cellHCentered);
$table->addCell(5000,$cellVCentered)->addText($ujob,$styleFouns,$cellHCentered);
$ucardno =$data -> ucardno;
$table->addCell(5000,$cellVCentered)->addText('身份证号',$styleFoun,$cellHCentered);
$table->addCell(5000,$cellVCentered)->addText($ucardno,$styleFouns,$cellHCentered);
//第四行
$table->addRow(500);
$table->addCell(null, $cellRowContinue);
$uaddress = $data -> uaddress;
$table->addCell(5000,$cellVCentered)->addText("地址",$styleFoun,$cellHCentered);
$table->addCell(5000,$cellColSpan)->addText($uaddress,$styleFouns,$cellHCentered);
//第五行
$table->addRow(500);
$table->addCell(null, $cellRowContinue);
$upostalcode = $data -> upostalcode;
$pcd = $data -> pcd;
$table->addCell(5000,$cellVCentered)->addText("邮政编码",$styleFoun,$cellHCentered);
$table->addCell(5000,$cellVCentered)->addText($upostalcode,$styleFouns,$cellHCentered);
$table->addCell(5000,$cellVCentered)->addText('所在区域',$styleFoun,$cellHCentered);
$table->addCell(5000,$cellVCentered)->addText($pcd,$styleFouns,$cellHCentered);
$table->addRow(500);
$table->addCell(null, $cellRowContinue);
$utelno = $data -> utelno;
$uemail = $data -> uemail;
$table->addCell(5000,$cellVCentered)->addText("联系电话",$styleFoun,$cellHCentered);
$table->addCell(5000,$cellVCentered)->addText($utelno,$styleFouns,$cellHCentered);
$table->addCell(5000,$cellVCentered)->addText('电子邮件',$styleFoun,$cellHCentered);
$table->addCell(5000,$cellVCentered)->addText($uemail,$styleFouns,$cellHCentered);
$table->addRow(500);
$table->addCell(null, $cellRowContinue);
$uphoneno = $data -> uphoneno;
$table->addCell(5000,$cellVCentered)->addText("手机号",$styleFoun,$cellHCentered);
$table->addCell(5000,$cellVCentered)->addText($uphoneno,$styleFouns,$cellHCentered);
$table->addCell(5000,$cellVCentered)->addText('',$styleFoun,$cellHCentered);
$table->addCell(5000,$cellVCentered)->addText('',$styleFouns,$cellHCentered);
$table->addRow(500);
$dname = $data -> dname;
$dlevel = $data -> dlevel;
$table->addCell(5000,$cellVCentered) -> addText('被举报对象',$styleFoun,$cellHCentered);
$table->addCell(5000,$cellVCentered)->addText("单位名称",$styleFoun,$cellHCentered);
$table->addCell(5000,$cellVCentered)->addText($dname,$styleFouns,$cellHCentered);
$table->addCell(5000,$cellVCentered)->addText('级别',$styleFoun,$cellHCentered);
$table->addCell(5000,$cellVCentered)->addText($dlevel,$styleFouns,$cellHCentered);
$table->addRow(1500);
$dproblem = $data -> dproblem;
$table->addCell(5000,$cellVCentered) -> addText('主要问题',$styleFoun,$cellHCentered);
$table->addCell(5000,$cellColSpans)->addText($dproblem,$styleFouns,$cellHCentered);
$table->addRow(700);
$table->addCell(5000,$cellVCentered) -> addText('拟办意见',$styleFoun,$cellHCentered);
$table->addCell(5000,$cellColSpans)->addText("",$styleFouns,$cellHCentered);
$table->addRow(700);
$table->addCell(5000,$cellVCentered) -> addText('领导部批示',$styleFoun,$cellHCentered);
$table->addCell(5000,$cellColSpans)->addText("",$styleFouns,$cellHCentered);
$table->addRow(700);
$reply = $data -> reply;
$table->addCell(5000,$cellVCentered) -> addText('反馈内容',$styleFoun,$cellHCentered);
$table->addCell(5000,$cellColSpans)->addText($reply,$styleFouns,$cellHCentered);
$section -> addText('注:登记表内各项信息均为举报人提供,未经核实;请注意保护举报人');
// 保存文件
$writer = \PhpOffice\PhpWord\IOFactory::createWriter($phpword, 'Word2007');
$writer->save('举报.docx');
$files = base_path().'/public/举报.docx';
$name = basename($files);
return response()->download($files, $name,$headers = ['Content-Type'=>'application/zip;charset=utf-8']);
4. 效果图