1. 程式人生 > >PHP+匯出word功能實現

PHP+匯出word功能實現

  基於專案需求,匯出word檔案。

  此功能實現是基於ThinkPHP框架,需要引入一個原生的php檔案word.class.php,將此引入:如圖目錄之下:

  專案名稱/Application/Common/Common/word.class.php

如圖中所示的function.php中任何函式方法,在框架內控制器中都可以直接呼叫,所以,在function.php中引入word.class.php,並呼叫此類,生成word檔案程式碼

include_once("word.class.php");

function getWordDocument($content, $absolutePath = "", $isEraseLink = true) {
    $mht = new MhtFileMaker();
    if ($isEraseLink)
        $content = preg_replace('/<a\s*.*?\s*>(\s*.*?\s*)<\/a>/i', '$1', $content);   //去掉連結

    $images = array();
    $files = array();
    $matches = array();
    //這個演算法要求src後的屬性值必須使用引號括起來
    if (preg_match_all('/<img[.\n]*?src\s*?=\s*?[\"\'](.*?)[\"\'](.*?)\/>/i', $content, $matches)) {
        $arrPath = $matches[1];
        for ($i = 0; $i < count($arrPath); $i++) {
            $path = $arrPath[$i];
            $imgPath = trim($path);
            if ($imgPath != "") {
                $files[] = $imgPath;
                if (substr($imgPath, 0, 7) == 'http://') {
                    //絕對連結,不加字首
                } else {
                    $imgPath = $absolutePath . $imgPath;
                }
                $images[] = $imgPath;
            }
        }
    }
    $mht->AddContents("tmp.html", $mht->GetMimeType("tmp.html"), $content);

    for ($i = 0; $i < count($images); $i++) {
        $image = $images[$i];
        if (@fopen($image, 'r')) {
            $imgcontent = @file_get_contents($image);
            if ($content)
                $mht->AddContents($files[$i], $mht->GetMimeType($image), $imgcontent);
        }
        else {
            echo "file:" . $image . " not exist!<br />";
        }
    }

    return $mht->GetFile();
}

function WordBirth($applyid,$username,$context){
	header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
$id = rand(1, 527);
//$wordStr = file_get_contents("http://www.sucaihuo.com/js/" . $id . ".html");
$fileContent = getWordDocument($context);
$fileName = iconv("utf-8", "GBK", '協議' . '_' . $applyid . '_' .$username);
header("Content-Type: application/doc");
header("Content-Disposition: attachment; filename=" . $fileName . ".doc");
echo $fileContent;
}
最終在框架中呼叫此方法WordBirth,就可以達到生成word的目的

溫馨提示:關於word.class.php,已上傳我的資源庫。