2012-03-13 99 views
0

在使用PHP輸出Excel文件時,它工作正常,但是,每個Excel文件在頂部有3個空白行。標頭是這樣的:在尋找在文本編輯器中3個空行如記事本PHP Excel空白行和標題

<?php 
header ("Expires: Mon, 28 Oct 2008 05:00:00 GMT"); 
header ("Last-Modified: " . gmdate("D,d M YH:i:s") . " GMT"); 
header ("Cache-Control: no-cache, must-revalidate"); 
header ("Pragma: no-cache"); 
header ("Content-type: application/vnd.ms-excel"); 
header ("Content-Disposition: attachment; filename=\"GridExport.xls"); 
header ("Content-Description: Generated Report"); 
echo $content_for_layout; 
?> 

,我居然看到一個空行,由行用一個空格之後,由另一張空白行之後,因此這基本上等同於:

\n.\n\n 

其中週期=單個空格。

最後,當我在Excel> 2003中打開該文件時,我收到有關文件未處於正確格式的錯誤消息,但單擊yes會打開它(減去3空白行問題)。 是否有可能發送正確的標題不能得到這個消息?一看截圖:

https://twiki.auscope.org/wiki/pub/Grid/WfsReaderWs/OpenFileWarning.png

+0

什麼是$ content_for_layout?它實際上是一個實際的Excel文件的二進制數據,還是隻是你試圖假裝的一些CSV數據是一個Excel文件? – 2012-03-13 15:29:40

+0

這是TAB分隔的數據。另外,如果我將它設置爲無,或者對其進行評論,我仍然有3個空行問題。 – Pyrite 2012-03-13 15:37:59

+0

檢查這個php腳本以及其他包含腳本的腳本是否包含開始的空白。你沒有抱怨頭沒有被尊重,所以最有可能的是在你的頭()調用後發生。 – 2012-03-13 15:41:15

回答

0

如果用一個XLS擴展Excel 2007和上面的輸出CVS會給你一個警告,它不是一個Excel文件,但打開它。早期版本不會給出警告。 將其正確輸出爲CSV文件不會導致該錯誤,或​​阻止其他CVS處理應用程序處理它。

至於線是什麼 - 不可能不知道什麼是在$ content_for_layout告訴

+0

行不是由$ content_for_layout造成的,如果我註釋掉該行,或將其設置爲'',我仍然得到他們。 – Pyrite 2012-03-13 15:35:46

+0

順便說一句,如果我不使用xls擴展名(使用.csv代替),Excel將不會選取TAB分隔符。如果我使用逗號,一些文本可能會包含它們,這會將所有內容擰緊。 – Pyrite 2012-03-13 15:48:40

+0

Excel不會在csv文件中的選項卡上(即逗號分隔值)拾取,如果要使用製表符分隔,其擴展名只是文本(顯然無法幫助)。有幾個php CSV庫,如果你不想'自己處理逗號的情況下 – Woody 2012-03-13 16:17:22

0

不應:

header ("Content-Disposition: attachment; filename=\"GridExport.xls");

header ("Content-Disposition: attachment; filename=\"GridExport.xls\"");

我不不知道這是否是答案,但無論如何,這對我來說都是錯誤的。

+0

謝謝你的錯字。不幸的是,這並沒有解決它。 A雖然努力。 – Pyrite 2012-03-13 15:49:33