2011-04-01 71 views
2

我最近使用下面的代碼將數據導出爲ex​​cel文件。但是輸出顯示爲具有來自數據庫的正確數據的html頁面。使用php將數據從數據庫轉儲到excel文件4.3.9

<?php 
/* database connection here */ 

$file_type = "vnd.ms-excel"; 
$file_ending = "xls"; 
header("Content-Type: application/$file_type"); 
header("Content-Disposition: attachment; filename=$table.$file_ending"); 
header("Pragma: no-cache"); 
header("Expires: 0"); 

/* extract from database */ 

,拿出從數據庫中的所有數據,所以我假定數據庫功能是正確的,但它只是不保存爲Excel文件。我在以前的項目中使用的代碼完全相同,並且工作正常。任何想法如何解決這個問題? plz幫助。

+0

**警告**:PHP 4已被*不支持*超過兩年。您*不應*編寫專爲PHP 4設計的新代碼。 – Charles 2011-04-04 06:21:25

+0

他的生產環境可能實際上迫使他使用舊的PHP版本。雖然我確實贊同你:-)。 – Htbaa 2011-04-04 07:23:18

回答

1

終於發現這是我的問題。剛剛解決它只需設置UTF-8UTF-8沒有BOM在我的編輯器....代碼似乎是正確的,但這裏是我現在使用的更好的標題內容。謝謝你們的幫助。 ;)

 header("Pragma: public"); 
    header("Expires: 0"); 
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
    header("Content-Type: application/force-download"); 
    header("Content-Type: application/octet-stream"); 
    header("Content-Type: application/download"); 
    header("Content-Disposition: attachment;filename=".$filename.".xls"); 
    header("Content-Transfer-Encoding: binary "); 
0

你可以使用這個類,它可以讓你從PHP

PHP Class for Reading/Writing Excel Files

Another one

創建Excel文件,我建議第一個雖然。

+0

感謝您的回覆!但使用上述類的要求是PHP 5.2.0或更高版本。可悲的是,PHP 4甚至不允許使用include(); 。:( – zaw 2011-04-01 09:43:42

+0

檢查線路'標題(「內容類型:應用/ $ FILE_TYPE」)'是解析可變適當 – 2011-04-01 09:47:50

+0

另外,嘗試'標題(「內容處置:附件;文件名= \」 $表。$ file_ending \「」);' – 2011-04-01 09:52:06

1

我的建議是檢查生成的 HTTP頭並確保它們是正確的。您可以使用Firebug的「Net」面板或您選擇的工具。

在任何情況下,你的描述,這部分表明,你是不是產生一個Excel文件:

輸出顯示爲HTML頁面 從數據庫

Excel文件正確的數據是二進制文件。如果在瀏覽器中顯示,它們看起來像垃圾。我懷疑你是在告訴瀏覽器「這是一個Excel電子表格」,然後發送HTML。


順便說一句,Expires標題看起來不正確。它應該包含字符串的日期,而不是一個整數:

http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.21

作爲規範說,瀏覽器必須處理0in the past,但無論如何都不是正確的值。

+0

嗨,顯示在螢火蟲中的迴應標題是Content-Type \t text/html;字符集= UTF-8。那麼我應該只是過期或設置一些東西? – zaw 2011-04-01 10:26:50

+0

然後其他人在設置它之後正在更改「Content-Type」標題。它可以是稍後運行的一些PHP代碼或Web服務器本身(Apache,IIS或其他)。 – 2011-04-01 11:31:04

+0

我已經使用了[我猜測的是]過去的OP的方法,它對於單張工作表很好:發送Excel頭和HTML表作爲內容。 Excel解析HTML(包括某些樣式信息)並將其顯示爲工作表。 – 2011-04-01 20:20:46

0

response to this question中有用於讀取/寫入Excel文件的PHP庫列表。我不確定其中有多少人會使用PHP4(當然大多數需要PHP5),但您可能會在這裏找到一些東西。

相關問題