2014-01-16 59 views
1

我在我的庫存部分有以下代碼,當我運行這段代碼時,它保存了一個excel文件,但結果顯示整個html文件不是我的數據。Joomla導出或下載報告到CSV

<?php 

$csv = NULL; 
$arr = array("product_name","product_sku","product_in_stock","virtuemart_product_id","product_price_display","product_instock_value"); 
$csv = "Product Name, Product SKU, In Stock, Booked ordered products, Cost Price, Stock Value \n"; 
$c=0; 
while(list($key,$value)=each($arr)){ 
$c++; 
$cc=1; 
foreach ($this->inventorylist as $key => $product){ 
$cc++; 
$csv .= join(',',array($product->product_name.",".$product->product_sku.",".$product->product_in_stock.",".$product->virtuemart_product_id.",".$product->product_price_display.",".$product->product_instock_value))." \n"; 

} 

} 

JResponse::clearHeaders(); 
JResponse::setHeader('Content-Type', 'application/vnd.ms-excel', true); 
JResponse::setHeader('Content-Disposition', 'csv; filename=inventory_report.csv; size='.strlen($csv), true); 
JResponse::sendHeaders(); 

任何幫助將不勝感激。

感謝

Khalique

+0

一些額外的見解,如果你的var_dump什麼happends '$ csv'變量? – Lodder

+0

看看核心com_banners組件,它會下載一個csv文件。 – Elin

回答

1

這裏的蠻力解決方案只是讓你去:

header("Content-type: text/csv"); 
header("Content-Disposition: attachment; filename=file.csv"); 
header("Pragma: no-cache"); 
header("Expires: 0"); 

// Echo the csv content. 
echo "foo,bar\n1,2"; 

// Close the application gracefully. 
JFactory::getApplication()->close(); 

一個沒有使用的意見,但包括在URL &format=raw稍微乾淨的方法是:

$app = JFactory::getApplication(); 
$doc = JFactory::getDocument(); 

$doc->setMimeEncoding('application/vnd.ms-excel'); 

$app->setHeader(
    'Content-disposition', 
    'attachment; filename="inventory_report.csv"', 
    true 
); 

echo "foo,bar\n1,2"; 

但最好的方法是使用下載基於raw文檔類型查看。您可以在com_banners找到這樣的例子:

您還可能獲得本次討論https://groups.google.com/forum/#!topic/joomla-dev-general/dRa_39AGDBY

+0

感謝您的回答 – user3202948