2012-08-03 51 views
3

任何人都可以幫助我在使用PHP導出Excel時如何刪除此警告。如何在使用PHP導出Excel時刪除警告

「你試圖打開‘MyFile.xls’的文件,是不是由文件擴展名指定的格式不同。驗證該文件沒有損壞,是來自可信來源打開文件之前。你想現在打開文件嗎?「

我完全理解這個警告,說Excel的內容有不同的格式。 我只是想知道如何/怎樣做才能消除此警告

<?php 
    header("Content-type: application/x-msexcel; charset=utf-8"); 
    header("Content-Disposition: attachment; filename=MyFile.xls"); 
?> 

現在我只有上面的代碼,這意味着沒有顯示呢,我想填充任何內容之前先解決這個問題。當前安裝的版本是MS Office 2007. 我想嘗試PHPExcel,但我不確定它是否可以解決問題。

在此先感謝!

+0

您是否嘗試設置文件名以'MyFile.xlsx'? – 2012-08-03 09:35:57

+1

我認爲當您試圖在Excel中打開文件時出現錯誤?那麼,正如你已經注意到你得到這個錯誤,因爲你沒有在文件中的任何內容,它顯然不會打開,直到你輸出一個實際的Excel xls文件。 當你開始輸出實際的Excel內容時,它應該消失。該警告讓您知道格式實際上不是Excel文件。當你開始使用PHPExcel時,它將會/應該消失。 – 2012-08-03 09:38:22

回答

1

您可能正在保存帶有XLS擴展名的CSV文件。 將內容類型更改爲文本/ csv並將文件擴展名更改爲.csv,它會在Excel中默認打開並且應該阻止顯示此警告。

0

您確定您正在導出excel文檔嗎?

如果是這樣的:嘗試如下因素標題:

header("Pragma: public"); 
header('Content-Type: application/vnd.ms-excel'); 
header('Content-Disposition: attachment; filename="MyFile.xls"'); 

這不符合我的MS Office 2007的安裝

0

上面的答案在PHPExcel會給你很好的結果。但是如果你想用corePHP來實現它,那麼這裏就是代碼來暗示。

<?php 

function xlsBOF() { 
    echo pack("ssssss", 0x809, 0x8, 0x0, 0x10, 0x0, 0x0); 
} 
function xlsEOF() { 
    echo pack("ss", 0x0A, 0x00); 
} 
function xlsWriteNumber($Row, $Col, $Value) { 
    echo pack("sssss", 0x203, 14, $Row, $Col, 0x0); 
    echo pack("d", $Value); 
} 
function xlsWriteLabel($Row, $Col, $Value) { 
    $L = strlen($Value); 
    echo pack("ssssss", 0x204, 8 + $L, $Row, $Col, 0x0, $L); 
    echo $Value; 
} 
// prepare headers information 
header("Content-Type: application/force-download"); 
header("Content-Type: application/octet-stream"); 
header("Content-Type: application/download"); 
header("Content-Disposition: attachment; filename=\"export_".date("Y-m-d").".xls\""); 
header("Content-Transfer-Encoding: binary"); 
header("Pragma: no-cache"); 
header("Expires: 0"); 
// start exporting 
xlsBOF(); 
// first row 
xlsWriteLabel(0, 0, "id"); 
xlsWriteLabel(0, 1, "name"); 
xlsWriteLabel(0, 2, "email"); 
// second row 
xlsWriteNumber(1, 0, 230); 
xlsWriteLabel(1, 1, "John"); 
xlsWriteLabel(1, 2, "[email protected]"); 
// third row 
xlsWriteNumber(2, 0, 350); 
xlsWriteLabel(2, 1, "Mark"); 
xlsWriteLabel(2, 2, "[email protected]"); 
// end exporting 
xlsEOF(); 
exit; 

?> 

參考從http://krasimirtsonev.com/blog/article/php-export-mysql-data-to-xls-file

0

可以使用: 報頭( '內容類型:應用程序/ vnd.ms-的excel'); header('Content-Disposition:attachment; filename =「myfile.xls」'); header('Cache-Control:max-age = 0');

或者使用以下代碼:

//包含PHPExcel_IOFactory 包括 'PHPExcel/IOFactory.php';

$ inputFileName ='./sampleData/example1。XLS';

//讀取您的Excel工作簿 try { $ inputFileType = PHPExcel_IOFactory :: identify($ inputFileName); $ objReader = PHPExcel_IOFactory :: createReader($ inputFileType); $ objPHPExcel = $ objReader-> load($ inputFileName); ('Error加載文件'''.pathinfo($ inputFileName,PATHINFO_BASENAME)。'「:'。$ e-> getMessage());} catch(Exception e){ } }

//獲取工作表尺寸 $ sheet = $ objPHPExcel-> getSheet(0); $ highestRow = $ sheet-> getHighestRow(); $ highestColumn = $ sheet-> getHighestColumn();

//循環反過來 工作表的每一行($行= 1; $行< = $ highestRow; $行++){ //讀取一行數據到一個數組 $ rowData = $ sheet-> rangeToArray('A'。$ row。':'。$ highestColumn。$ row, NULL, TRUE, FALSE); //插入行數據陣列到您選擇的數據庫這裏 }

參考:

http://www.grad.clemson.edu/assets/php/phpexcel/documentation/api/__filesource/fsource_phpexcel__phpexceliofactory.php.html