3

このサイトからパッケージ PHPWord_0.6.2_Beta.zip をダウンロードしました

。サンプルと PHPWord の 2 つのディレクトリと、PHPWord.php という 1 つのファイルがあります
。PHPWord ディレクトリと PHPWord.php を application/third_party に配置し、'Word.この記事で説明されているように、application/libraries 内の php'

は、新しいライブラリ コード Word.php です。

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

require_once APPPATH."/third_party/PHPWord.php"; 

class Word extends PHPWord { 
    public function __construct() { 
        parent::__construct(); 
    } 
}
?>


これで、PHPWord を CI ライブラリとして簡単に使用できるようになり

ました。ダウンロードしたパッケージのサンプル ディレクトリからテキスト サンプルを試しました。元のコードは次のとおりです。

<?php
require_once '../PHPWord.php';

// New Word Document
$PHPWord = new PHPWord();

// New portrait section
$section = $PHPWord->createSection();

// Add text elements
$section->addText('Hello World!');
$section->addTextBreak(2);

$section->addText('I am inline styled.', 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));
$section->addText('I am styled by two style definitions.', 'rStyle', 'pStyle');
$section->addText('I have only a paragraph style definition.', null, 'pStyle');



// Save File
$objWriter = PHPWord_IOFactory::createWriter($PHPWord, 'Word2007');
$objWriter->save('Text.docx');
?>


そして、CIコントローラーに実装しようとしました。これがコードPHPWord_Text.phpです

<?php if (!defined('BASEPATH')) exit ('No direct script access allowed');
class PHPWord_Text extends CI_Controller {
    function __construct() {
        parent::__construct();
        $this->load->library('word');
    }
    function index() {
        $PHPWord = $this->word; // New Word Document
        $section = $PHPWord->createSection(); // New portrait section
        // Add text elements
        $section->addText('Hello World!');
        $section->addTextBreak(2);
        $section->addText('I am inline styled.', 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));
        $section->addText('I am styled by two style definitions.', 'rStyle', 'pStyle');
        $section->addText('I have only a paragraph style definition.', null, 'pStyle');
        // Save File / Download (Download dialog, prompt user to save or simply open it)
        $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');
    }
}
?>


でアクセスします

http://localhost/codeigniter/index.php/PHPWord_Text


フォイラー!!! 私のコードは動作します! しかし...ダウンロードしたパッケージからディレクトリExamplesのTemplate Exampleを新しいCIコントローラーに翻訳しようとしたとき、私は少し混乱しました。ここにTemplate.phpの元のコードがあります

<?php
require_once '../PHPWord.php';

$PHPWord = new PHPWord();

$document = $PHPWord->loadTemplate('Template.docx');

$document->setValue('Value1', 'Sun');
$document->setValue('Value2', 'Mercury');
$document->setValue('Value3', 'Venus');
$document->setValue('Value4', 'Earth');
$document->setValue('Value5', 'Mars');
$document->setValue('Value6', 'Jupiter');
$document->setValue('Value7', 'Saturn');
$document->setValue('Value8', 'Uranus');
$document->setValue('Value9', 'Neptun');
$document->setValue('Value10', 'Pluto');

$document->setValue('weekday', date('l'));
$document->setValue('time', date('H:i'));

$document->save('Solarsystem.docx');
?>


誰でもこの問題で私を助けてもらえますか? お願いします.. T_T
: サーバーに保存したくありません。保存するか開くかをユーザーに求めるダウンロード ダイアログを表示したいです。ここにあるコードのように機能します。

// Save File / Download (Download dialog, prompt user to save or simply open it)
$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');
4

5 に答える 5

0

クラスのメソッドsave()Template一時ファイルドキュメントの名前を返すので、それをユーザーに与えるだけreadfile($tempName)です;

于 2014-12-09T15:23:46.230 に答える
-1

私はあなたの質問を正しく理解しているかどうかわからないので、間違っていたらすみません。

4 番目のコード ブロックには、次の行があります。

$document->save('Solarsystem.docx');

ファイルをローカル ディスクに保存せずにクライアントに送信する場合は、その行を削除して 5 番目のコード ブロックからコードを追加するだけです。

// Save File / Download (Download dialog, prompt user to save or simply open it)
$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');
于 2013-04-04T20:27:21.187 に答える
-1
<?php

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

require_once APPPATH . '/src/PhpWord/Autoloader.php';

use PhpOffice\PhpWord\Autoloader as Autoloader;
Autoloader::register();
于 2015-07-28T22:38:02.740 に答える