在Code Igniter中调用PHPword第三方库

时间:2017-05-27 12:39:18

标签: php codeigniter codeigniter-3 phpword

我在Code Igniter中调用PHPWord库时遇到问题,我已经使用了PHPExcel并且没有问题一切顺利。 但我对这个PHPWord有一个问题,因为当我尝试使用相同的方法来调用PHPExcel时,它并没有解决任何问题。我仍然看到一个错误。

这不像我不在谷歌搜索它,我已经搜索过了,但是,仍然没有人可以解决我的问题,我不知道问题出在哪里。

让我解释一下是什么问题。

  

仅供参考:我使用PHP 7.1.1

因为PHP版本,PHPWord得到了一些错误,这些错误表示一个名为 String 的类,它被称为变量,所以由于该错误,我将其更改为字符串所有与该班级相关的人。 在我更改之后,我想用库文件调用该类。

这是文件:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

require_once APPPATH.'/third_party/PHPWord/Autoloader.php';
    use PhpOffice\PhpWord\Autoloader as Autoloader;
    use PhpOffice\PhpWord\Settings as Settings;
    use PhpOffice\PhpWord\PhpWord as PhpWord;

/* I tried two different ways */
// class Word extends PhpWord {
//     public function __construct() { 
//         parent::__construct(); 
//     } 
// }

Autoloader::register();
Settings::loadConfig();

这是调用该类的Controller代码。

$this->load->library('word');

$section = $this->word->createSection(array('orientation'=>'landscape'));

在我这样做之后,它说不存在的类:Word ,我不知道问题出在哪里,是不是因为我更改了类名?或者它与我的CI版本(3)不兼容?

因为我已经尝试了不同的方法但仍然无法解决这个问题,有人可以帮助我解决这个问题并告诉我我做错了什么吗?谢谢。

2 个答案:

答案 0 :(得分:0)

我没有试过PHP7,但我发现这个Github回购对我有用。

https://github.com/webeasystep/phpword_codeigniter

我刚刚将application \ third_party \ PhpWord文件夹和application \ library \ PhpWord.php复制到我项目中的相同位置,然后使用了所提供的控制器中的一些代码,例如......

public function test()
{
    $this->load->library('Phpword');

    $phpWord = new \PhpOffice\PhpWord\PhpWord();
    $phpWord->getCompatibility()->setOoxmlVersion(14);
    $phpWord->getCompatibility()->setOoxmlVersion(15);


    $filename = 'test.docx';
    // add style settings for the title and paragraph

    $section = $phpWord->addSection();
    $section->addText("Hello, world");
    $section->addTextBreak(1);
    $section->addText("It's cold outside.");

    $objWriter = \PhpOffice\PhpWord\IOFactory::createWriter($phpWord, 'Word2007');
    $objWriter->save($filename);
    // send results to browser to download
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename='.$filename);
    header('Content-Transfer-Encoding: binary');
    header('Expires: 0');
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Pragma: public');
    header('Content-Length: ' . filesize($filename));
    flush();
    readfile($filename);
    unlink($filename); // deletes the temporary file
    exit;
}

这很好用,当我在浏览器中点击我的控制器/测试时,我得到一个.docx

答案 1 :(得分:0)

对于我的PHP 7版本,以下库对我来说运行正常,

https://github.com/rifqisucahyo/CI_PHPWord

class Word extends PHPWord {
 public function __construct() {
   parent::__construct();
   $this->load->library('word');
 }

 function index() {
    require_once APPPATH."/third_party/PHPWord.php";
    $PHPWord = $this->word; // New Word Document
    $section = $PHPWord->createSection(); // New portrait section
    // Add text elements
    $section->addText('Hello World!');
    $section->addTextBreak(2);
    $section->addText('Mohammad Rifqi Sucahyo.', array('name'=>'Verdana', 'color'=>'006699'));
    $section->addTextBreak(2);
    $PHPWord->addFontStyle('rStyle', array('bold'=>true, 'italic'=>true, 'size'=>16));
    $PHPWord->addParagraphStyle('pStyle', array('align'=>'center', 'spaceAfter'=>100));
    // Save File / Download (Download dialog, prompt user to save or simply open it)
    $section->addText('Ini Adalah Demo PHPWord untuk CI', 'rStyle', 'pStyle');

    $filename='just_some_random_name.docx'; //save our document as this file name
    header('Content-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document'); //mime type
    header('Content-Disposition: attachment;filename="'.$filename.'"'); //tell browser what's the file name
    header('Cache-Control: max-age=0'); //no cache
    $objWriter = PHPWord_IOFactory::createWriter($PHPWord, 'Word2007');
    $objWriter->save('php://output');
 }

}