1

最近、「PHPでWord文書ファイルを作成する」作業中に問題に直面しています。

私のウェブサイトにはフォームがあります。「名前」、「電話番号」、「住所」などの10個のフィールドが含まれています。

ユーザーがこれらのフィールドに入力してフォームを送信すると、「xxx さんが最近このフォームを送信しました」というフォームと対応するフィールド値を含む電子メールが管理者に送信されます。

これにはファイルハンドラーを使用しています。しかし、htmlタグを使用してWord docでファイルの見栄えを良くしている場合、htmlはそこで機能せず、そのdocファイルにテキストとして出力されます。

ここに私のコードがあります--->

$fh = fopen(JPATH_BASE.'/files/form_'.$user->id.'_'.$form_id.'_'.$submit_id.'.doc',"w+");
        //print_r($post); exit;
        //ob_start();
        //$data = ob_get_clean();
        //$data = '';
        $data = $emailreceipttext;
        foreach($fieldsInArray as $fields)
        {
            foreach($post as $key=>$p)
            {

                if($key==$fields->name)
                {

                if(is_array($p))
                {
                    $p = implode(",",$p);
                }
                $data = str_replace("{".$fields->name."}", $p, $data);

                }
            }
        }
        //fwrite($fh, $data);

        //print_r($data);exit;
    //}


    /*print_r($data);
    exit;*/
    fwrite($fh, $data); 
    $file = 'form_'.$user->id.'_'.$form_id.'_'.$submit_id.'.doc';

    if (file_exists($file)) {
        header('Content-Description: File Transfer');
        header('Content-Type: application/msword');
        header('Content-Disposition: attachment; filename='.basename($file));
        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($file));
        ob_clean();
        flush();
        readfile($file);
        exit;
        }
        fclose($fh);
        //echo hi; print_r($data); exit;
    $this->send_mail($data,$submit_id);

ここで $data は、メール本文を構成する変数です。そして、そのフォームのフィールドの値を格納するために str_replace を使用しています。

しかし、ドキュメントは次のように表示されています--->

<p><label>name</label>:<b>arnas sinha</b><br/>
<label>phone</label>:<b>9878790989</b><br/>
 <label>address</label>:<b>india</b><br/>

word docファイルを作成するためにhtml形式を使用する方法は?

4

1 に答える 1

1

これは、http ヘッダーを使用して解決できます。

<?php
    header("Content-type: application/vnd.ms-word");
    header("Content-Disposition: attachment;Filename=document_name.doc");

    echo "<html>";
    echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=Windows-1252\">";
    echo "<body>";
    echo "<b>My first document</b>";
    echo "</body>";
    echo "</html>";
?>

上記のヘッダーをファイルに追加すると、これでうまくいきます。

もう 1 つの方法は、COM オブジェクトを使用することです。しかし、上記のもので十分なはずです。

于 2013-08-12T10:48:08.190 に答える