aman.maurya/office-exporter

此库可以生成MsWord和OpenDoc等文档文件

dev-master 2020-08-10 09:36 UTC

This package is auto-updated.

Last update: 2024-09-10 19:09:27 UTC


README

此库可以生成MsWord和OpenDoc等文档文件

安装

要安装库,只需

$ composer require aman.maurya/office-exporter @dev

需求

php: >=5.6.40

入门

  • 首先,您需要在文字处理软件(Microsoft Office 2007及以上版本)中创建扩展名为[.docx]的模板。
  • 然后从文字处理软件模板中提取主内容文件。这可以通过php脚本或手动完成,例如,在此示例中我选择了手动过程,详情请见这里
  • 将XML文件转换为XSLT样式表
<xsl:stylesheet version="1.0"  
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
	<xsl:template match="/">
		....
	</xsl:template>
</xsl:stylesheet>
  • 从数据库结果生成XML表单。
基本
require __DIR__ . 'vendor/autoload.php';

use OfficeExporter\Xml;

$xml = new Xml('employee');

$xml->setData('row', [
	'name' => 'Vivian Warner',
	'empId' => '123',
]);

$xml->setData('row', [
	'name' => 'Shane Lloyd',
	'empId' => '456',
]);

$xml->generateXml();

<!-- Output -->

<?xml version="1.0" encoding="UTF-8"?>

<employee>
	<row>
		<name>Vivian Warner</name>
		<empId>123</empId>
	</row>
	<row>
		<name>Shane Lloyd</name>
		<empId>456</empId>
	</row>
</employee>
高级
require __DIR__ . 'vendor/autoload.php';

use OfficeExporter\Xml;

$xml = new Xml('employee');

$xml->setData('row.name:vivian|age:13|address:123 street', [
	'name' => 'Vivian Warner',
	'empId.department:Engg' => '123',
]);

$xml->setData('row.name:vivian|age:30|address:456 street', [
	'names' => [
		['name' => 'person 1'],
		['phones' => [
			['phone' => '9023XXXXXXXX'],
			['phone' => '9223XXXXXXXX']
		]],
	],
	'empId.department:IT' => '456',
]);

$xml->generateXml();

<!-- Output -->

<?xml version="1.0" encoding="UTF-8"?>

<employee>
    <row name="vivian" age="13" address="123 street">
        <name>Vivian Warner</name>
        <empId department="Engg">123</empId>
    </row>
    <row name="vivian" age="30" address="456 street">
        <names>
            <name>person 1</name>
        </names>
        <names>
            <phones>
                <phone>9023XXXXXXXX</phone>
            </phones>
            <phones>
                <phone>9223XXXXXXXX</phone>
            </phones>
        </names>
        <empId department="IT">456</empId>
    </row>
</employee>
  • 合并XML和XSLT以生成新的ZIP存档。
$download->setDocTemplate('sample_word.docx');
$download->setXsltSource('document.xslt');

从文字处理软件模板中提取主内容文件的步骤

  • 使用模板创建文字文件。
  • 将文字文件从.docx更改为.zip,然后提取该zip文件。
  • 进入提取文件夹中的word文件夹。
  • 进入该文件夹,复制document.xml文件并将其粘贴到提取文件夹外的任何位置,然后删除所有提取的文件。
  • 现在将document.xml文件转换为XSLT样式表
  • 将word.zip文件转换回word.docx文件。

Office Exporter in action

快速入门和示例

require __DIR__ . 'vendor/autoload.php';

use OfficeExporter\Xml;
use OfficeExporter\MsWord;

$xml = new Xml('employee');

$xml->setData('row', [
	'name' => 'Vivian Warner',
	'empId' => '123',
]);

$xml->setData('row', [
	'name' => 'Shane Lloyd',
	'empId' => '456',
]);

$xml->generateXml();

$xmlString = $xml->__toString();

$download = new MsWord($xmlString);
$download->setDocTemplate('sample_word.docx');
$download->setXsltSource('document.xslt');
$download->create('sample.docx');