我在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)不兼容?
因为我已经尝试了不同的方法但仍然无法解决这个问题,有人可以帮助我解决这个问题并告诉我我做错了什么吗?谢谢。
答案 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');
}
}