tiitoo/wordbundle

这是一个Symfony2 Bundle,可以帮助您读取和写入Word文件,得益于PHPWord库

安装: 45

依赖项: 0

建议者: 0

安全性: 0

星标: 0

关注者: 2

分支: 0

开放问题: 0

类型:symfony-bundle

dev-master 2019-08-05 10:37 UTC

This package is auto-updated.

Last update: 2024-09-05 22:24:27 UTC


README

此Bundle允许您创建、修改和读取Word对象。

许可证

License

安装

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

    "minimum-stability": "dev",
    "prefer-stable": true,

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

    $composer require ggggino/wordbundle

3app/AppKernel.php中注册此Bundle

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

开始使用

  • 创建一个空对象
$phpWordObject = $this->get('phpword')->createPHPWordObject();
  • 从文件创建一个对象
$phpWordObject = $this->get('phpword')->createPHPWordObject('file.docx');
  • 创建一个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'

示例

伪控制器

最佳起点是位于Tests/app/Controller/FakeController.php的伪控制器,它是一个工作示例。

更多示例

您可以在官方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