基本准备工作
使用composer安装PHPword,
1
| composer require phpoffice/phpword
|
phpword的安装目录在vender中,在使用的时候直接new就可以了
基本的用法
1.开始新建phpword
1
| $php_word = new Phpword();
|
如果你直接复制这段代码一定会报错,因为这里没有写引用的代码,需要在class外层添加引用的代码也就是我们说的use,但是从此处开始我将直接将需要引用的地方写到new中。
1
| $php_word = new \PhpOffice\PhpWord\PhpWord();
|
在new之后可以进行基本的设置,
2.配置
1
2
3
4
| //配置字体
$php_word->setDefaultFontName('微软雅黑');
//配置全局的字号
$php_word->setDefaultFontSize(12);
|
还可以配置一些word的基本信息
1
2
3
4
5
6
7
8
9
10
11
| $properties = $php_word->getDocInfo();
$properties->setCreator('My name');
$properties->setCompany('My factory');
$properties->setTitle('My title');
$properties->setDescription('My description');
$properties->setCategory('My category');
$properties->setLastModifiedBy('My name');
$properties->setCreated(mktime(0, 0, 0, 3, 12, 2014));
$properties->setModified(mktime(0, 0, 0, 3, 14, 2014));
$properties->setSubject('My subject');
$properties->setKeywords('my, key, word');
|
3.添加section
1
| $section = $php_word->addSection();
|
在添加section的时候同时可以添加一些style进去
- borderBottomColor. 边框颜色.
- borderBottomSize. 边框宽度 (in twips).
- borderLeftColor. 左侧边框颜色.
- borderLeftSize. 左侧边框宽度(in twips).
- borderRightColor. 右侧边框颜色.
- borderRightSize. 右侧边框宽度(in twips).
- borderTopColor. 上边框颜色.
- borderTopSize. 上边框宽度(in twips).
- breakType. 换行格式 (nextPage, nextColumn, continuous, evenPage, oddPage).
- colsNum. 列数目.
- colsSpace. 列间距.
- footerHeight. 底部间距.
- gutter. 每页间距.
- headerHeight. 头间距.
- marginTop. 上边距(in twips).
- marginLeft. 左边距(in twips).
- marginRight. 右边距(in twips).
- marginBottom. 下边距(in twips).
- orientation. 页面方向:默认竖向:null 横向:landscape.
- pageSizeH. 页面高度(in twips).
- pageSizeW. 页面宽度(in twips).
4.添加文本
1
2
3
4
5
6
7
8
| $section->addText('我是一段话', [
'color' => '#000',
'size' => 40,
'bold' => true
], [
'align' => 'center',
'spacing' => 10
]);
|
这个就是添加文本的方式
1
| $section->addText('text',[font_style],[paragraph_style]);
|
本文的所有fontstyle,paragraphstyle都和此处的注解一致
font_style
- allCaps. 首字母大写, true or false.
- bgColor. 文字背景色, e.g. FF0000.
- bold. 加粗, true or false.
- color. 文字的颜色, e.g. FF0000.
- doubleStrikethrough. 双删除线, true or false.
- fgColor. 文字突出颜色, e.g. yellow, green, blue.
- hint. 文字内容类型(我暂时没用到过), default, eastAsia, or cs.
- italic. 斜体, true or false.
- name. 字体name, e.g. Arial.
- rtl. 从右到左的文本, true or false.
- size. 字号, e.g. 20, 22和word中的字号值一致.
- smallCaps. 小写, true or false.
- strikethrough. 删除线, true or false.
- subScript. 下标, true or false.
- superScript. 上标, true or false.
- underline. 下划线, dash, dotted, etc.
paragraph_style
- align. 对齐方式, center or left or right.
- spacing. 间距,(in twips).
5.添加分隔符
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| //换行符
$section->addTextBreak(2, [
'color' => '#000',
'size' => 40,
'bold' => true
], [
'align' => 'center',
'spacing' => 10
]);
//分页符
$section->addPageBreak();
//官方实例
$section->addTextBreak([breakCount], [font_style], [paragraph_style]);
|
这里的breakCount就是一个int,font_style及paragraph_style和text中一致,分页符没有过多的说明。
6.添加列表
1
2
3
4
5
6
7
8
9
10
11
| $list_style = [
'type' => 'multilevel',
'levels' => [
['format' => 'decimal', 'text' => '%1.', 'left' => 360, 'hanging' => 360, 'tabPos' => 360],
['format' => 'upperLetter', 'text' => '%2.', 'left' => 720, 'hanging' => 360, 'tabPos' => 720],
]
];
$section->addListItem('列表1', 0, null, $list_style);
$section->addListItem('列表a', 1, null, $list_style);
$section->addListItem('列表b', 1, null, $list_style);
$section->addListItem('列表2', 0, null, $list_style);
|
ex:
1
| $section->addListItem(text, [depth], [font_style], [list_style], [paragraph_style]);
|
list的style我没有找到更多的注解,就先拿例子中的注解一下吧
list_style
- type. 类型 hybridMultilevel or multilevel.
- levels. 级别 (arr).
- format. 格式(decimal or lowerLetter or lowerRoman or upperLetter or bullet).
- text. 文本(%+int).
- left. 左边距(in twips).
- hanging. 悬挂(in twips).
- tabPos. 可以理解为缩进(in twips).
7.添加表格
1
2
3
4
5
6
7
8
| $table = $section->addTable([
'width' => '9639',
'borderSize' => 6,
'cellMargin' => 50
]);
$table->addRow();
$table->addCell('1134')->addText('hhhh', $font_style_12, $paragraph_style);
$table->addCell('8505', $cell_col_span)->addText('wwww', $font_style_12, $paragraph_style);
|
这个是表格添加的基本方式,这里只对table_style进行注解
单元格中也有这样的一些样式控制
table_style
- bgColor. 背景色, e.g. ‘9966CC’.
- border(Top|Right|Bottom|Left)Color. 边框颜色, e.g. ‘9966CC’.
- border(Top|Right|Bottom|Left)Size. 边框宽度 in twips.
- gridSpan. 跨行.
- textDirection(btLr|tbRl). 文本方向. You can use constants \PhpOffice\PhpWord\Style\Cell::TEXT_DIR_BTLR and \PhpOffice\PhpWord\Style\Cell::TEXT_DIR_TBRL
- valign. 垂直对齐, top, center, both, bottom.
- vMerge. 垂直合并,restart or continue.
- width. 单元格宽 in twips.
- cantSplit. 表格行不能在页面之间折断, true or false.
- exactHeight. 行高设定.
- tblHeader. 在每个新页面上重复表格行, true or false.
8.Images
1
| $section->addImage('10001_1.jpg', $image_style);
|
image_style
- height. 高度 in pixels.
- marginLeft. 左边距 in inches, can be negative.
- marginTop. 上边距 in inches, can be negative.
- width. 宽度 in pixels.
- wrappingStyle. 图片格式, inline, square, tight, behind, or infront.
9.对象
1
| $section->addObject( $src, [$style] );
|
style
- align. 对齐方式, left - right - center
10.标题
1
| $section->addTitle( $text, [$depth] );
|
11.目录
1
2
3
| $styleTOC = ['tabLeader'=>PHPWord_Style_TOC::TABLEADER_DOT];
$styleFont = ['spaceAfter'=>60, 'name'=>'Tahoma', 'size'=>12];
$section->addTOC($styleFont, $styleTOC);
|
12.生成word
1
| $php_word->save($file_name,'Word2007',false);
|
生成word,
下载的时候需要将false改为true。
这个就是PHPword的基本样式。在写这个文章的时候参考了phpword的文档和djspy。