PHP生成Word文件的方法
首先,請確保在你的Windows系統中已經安裝並配置好了一個典型的WAMP環境。由於Interop純粹是一個Windows的特性,我們將在Windows平臺下搭建Apache和PHP,下面,小編為大家搜尋整理了PHP生成Word文件的方法,希望能給大家帶來幫助!更多精彩內容請及時關注我們應屆畢業生考試網!
PHP生成word原理利用windows下面的 com元件
利用PHP將內容寫入doc檔案之中
具體實現:
利用windows下面的 com元件
原理:com作為PHP的一個擴充套件類,安裝過office的`伺服器會自動呼叫ication的com,可以自動生成文件,PHP官方文件手冊:
使用官方例項:
// starting word
$word = new COM("ication") or die("Unable to instantiate Word");
echo "Loaded Word, version {$word->Version}n";
//bring it to front
$word->Visible = 1;
//open an empty document
$word->Documents->Add();
//do some weird stuff
$word->Selection->TypeText("This is a test...");
$word->Documents[1]->SaveAs("Useless ");
//closing word
$word->Quit();
//free the object
$word = null;
?>
個人建議:com例項後的方法都需要查詢官方文件才知道什麼意思,編輯器沒有程式碼提示,非常不方便,另外這個效率也不是很高,不推薦使用
利用PHP將內容寫入doc檔案之中
這個方法又可以分為兩種方法
生成mht格式(和HTML很相似)寫入word
純HTML格式寫入word
生成mht格式(和HTML很相似)寫入word
/**
* 根據HTML程式碼獲取word文件內容
* 建立一個本質為mht的文件,該函式會分析檔案內容並從遠端下載頁面中的圖片資源
* 該函式依賴於類MhtFileMaker
* 該函式會分析img標籤,提取src的屬性值。但是,src的屬性值必須被引號包圍,否則不能提取
*
* @param string $content HTML內容
* @param string $absolutePath 網頁的絕對路徑。如果HTML內容裡的圖片路徑為相對路徑,那麼就需要填寫這個引數,來讓該函式自動填補成絕對路徑。這個引數最後需要以/結束
* @param bool $isEraseLink 是否去掉HTML內容中的連結
*/
function getWordDocument( $content , $absolutePath = "" , $isEraseLink = true )
{
$mht = new MhtFileMaker();
if ($isEraseLink)
$content = preg_replace('/
$images = array();
$files = array();
$matches = array();
//這個演算法要求src後的屬性值必須使用引號括起來
if ( preg_match_all('/
{
$arrPath = $matches[1];
for ( $i=0;$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("",$mht->GetMimeType(""),$content);
for ( $i=0;$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!
";
}
}
return $mht->GetFile();
}
這個函式的主要功能其實就是分析HTML程式碼中的所有圖片地址,並且依次下載下來。獲取到了圖片的內容以後,呼叫MhtFileMaker類,將圖片新增到mht檔案中。具體的新增細節,封裝在MhtFileMaker類中了。
使用方法:遠端呼叫
url= http://www.***;
$content = file_get_contents($url);
$fileContent = getWordDocument($content,"");
$fp = fopen("", 'w');
fwrite($fp, $fileContent);
fclose($fp);
其中,$content變數應該是HTML原始碼,後面的連結應該是能填補HTML程式碼中圖片相對路徑的URL地址
本地生成呼叫:
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
$wordStr = '';
$fileContent = getWordDocument($wordStr);
$fileName = iconv("utf-8", "GBK", ‘jb51' . '_'. $intro . '_' . rand(100, 999));
更多PHP