dalv/wordbundle

这是一个Symfony2 Bundle,利用PHPWord库帮助您读写Word文件。

安装: 9

依赖者: 0

建议者: 0

安全: 0

星标: 0

关注者: 0

分支: 1

类型:symfony-bundle

2.0.0 2021-01-06 00:23 UTC

README

此Bundle是PHPOffice/PHPWord库的包装。

对于完整的参考,请查看PHPWord文档。 PHPWord Docs

许可证

License

安装

1 将以下内容添加到 composer.json 中的 require

    $composer require ggggino/wordbundle

2app/AppKernel.php 中注册此Bundle

    $bundles = array(
        // ...
        new GGGGino\WordBundle\GGGGinoWordBundle(),
    );

开始使用

  • 创建一个空对象
$phpWordObject = $this->get('phpword')->createPHPWordObject();
  • 创建一个Word对象并将其写入文件
$writer = $this->get('phpword')->createWriter($phpWordObject, 'Word2007');
$writer->save('file.xls');
  • 创建一个Word对象并创建一个StreamedResponse
$writer = $this->get('phpword')->createWriter($phpWordObject, 'Word2007');
$response = $this->get('phpword')->createStreamedResponse($writer);

不仅限于'Word2007'

类型列表包括

  1. 'Word2007'
  2. 'ODText'
  3. 'HTML'
  4. 'PDF'
  5. 'RTF'

示例

您可以在官方PHPWord仓库中找到许多示例 https://github.com/PHPOffice/PHPWord/tree/develop/samples

创建新的文档

namespace YOURNAME\YOURBUNDLE\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\ResponseHeaderBag;

class DefaultController extends Controller
{

    public function indexAction($name)
    {
        // ask the service for a Word2007
        $phpWordObject = $this->get('phpword')->createPHPWordObject();

        // Create a new Page
        $section = $phpWordObject->addSection();

        // Adding Text element to the Section having font styled by default...
        $section->addText(
            '"Learn from yesterday, live for today, hope for tomorrow. '
                . 'The important thing is not to stop questioning." '
                . '(Albert Einstein)'
        );

        // create the writer
        $writer = $this->get('phpword')->createWriter($phpWordObject, 'Word2007');
        // create the response
        $response = $this->get('phpword')->createStreamedResponse($writer);
        // adding headers
        $dispositionHeader = $response->headers->makeDisposition(
            ResponseHeaderBag::DISPOSITION_ATTACHMENT,
            'stream-file.doc'
        );
        $response->headers->set('Content-Type', 'application/msword');
        $response->headers->set('Pragma', 'public');
        $response->headers->set('Cache-Control', 'maxage=1');
        $response->headers->set('Content-Disposition', $dispositionHeader);

        return $response;        
    }
}

编辑文档

在模板文件(docx)中变量应声明为${var1},因此在模板中可以更改“var1”的值,如下所示

$phpTemplateObject->setValue('var1', 'testValue');

完整示例

namespace YOURNAME\YOURBUNDLE\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\ResponseHeaderBag;

class DefaultController extends Controller
{

    public function indexAction($name)
    {
      $fileName = ".../../test.docx";
    
        // ask the service for a Word2007
        $phpTemplateObject = $this->get('phpword')->createTemplateObject($fileName);

        $phpTemplateObject->setValue('test', 'testValue');
        
        $phpWordObject = $this->get('phpword')->getPhpWordObjFromTemplate($phpTemplateObject);

        // create the writer
        $writer = $this->get('phpword')->createWriter($phpWordObject, 'Word2007');
        // create the response
        $response = $this->get('phpword')->createStreamedResponse($writer);
        // adding headers
        $dispositionHeader = $response->headers->makeDisposition(
            ResponseHeaderBag::DISPOSITION_ATTACHMENT,
            'stream-file.docx'
        );
        $response->headers->set('Content-Type', 'application/msword');
        $response->headers->set('Pragma', 'public');
        $response->headers->set('Cache-Control', 'maxage=1');
        $response->headers->set('Content-Disposition', $dispositionHeader);

        return $response;        
    }
}

贡献

  1. 将项目分支
  2. 克隆仓库
  3. 提交PullRequest