2011-03-14 16 views
9

मैं अपने केकेपीएचपी वेबसाइट के साथ एक्सेल/सीएसवी निर्यात विकल्प को एकीकृत करना चाहता हूं, उपलब्ध घटकों या सहायकों के बारे में कोई विचार?केकेएफपी एक्सेल/सीएसवी निर्यात घटक

धन्यवाद!

उत्तर

18

यह समाधान CakePHP 2.0 के लिए है .. यू भी CakePHP 1.3 में

चरण 1 यह एकीकृत कर सकते हैं:/देखें/सहायक निर्देशिका अपने ऐप्लिकेशन में Csv.php के रूप में निम्नलिखित फ़ाइल सहेजें

<?php 
class CsvHelper extends AppHelper 
{ 
var $delimiter = ','; 
var $enclosure = '"'; 
var $filename = 'Export.csv'; 
var $line = array(); 
var $buffer; 

function CsvHelper() 
{ 
    $this->clear(); 
} 
function clear() 
{ 
    $this->line = array(); 
    $this->buffer = fopen('php://temp/maxmemory:'. (5*1024*1024), 'r+'); 
} 

function addField($value) 
{ 
    $this->line[] = $value; 
} 

function endRow() 
{ 
    $this->addRow($this->line); 
    $this->line = array(); 
} 

function addRow($row) 
{ 
    fputcsv($this->buffer, $row, $this->delimiter, $this->enclosure); 
} 

function renderHeaders() 
{ 
    header('Content-Type: text/csv'); 
    header("Content-type:application/vnd.ms-excel"); 
    header("Content-disposition:attachment;filename=".$this->filename); 
} 

function setFilename($filename) 
{ 
    $this->filename = $filename; 
    if (strtolower(substr($this->filename, -4)) != '.csv') 
    { 
     $this->filename .= '.csv'; 
    } 
} 

function render($outputHeaders = true, $to_encoding = null, $from_encoding ="auto") 
{ 
    if ($outputHeaders) 
    { 
     if (is_string($outputHeaders)) 
     { 
      $this->setFilename($outputHeaders); 
     } 
     $this->renderHeaders(); 
    } 
    rewind($this->buffer); 
    $output = stream_get_contents($this->buffer); 

    if ($to_encoding) 
    { 
     $output = mb_convert_encoding($output, $to_encoding, $from_encoding); 
    } 
    return $this->output($output); 
} 
} 
?> 

चरण 2: अपने नियंत्रक को यह हेल्पर जोड़ें:

var $helpers = array('Html', 'Form','Csv'); 

चरण 3: उदाहरण के लिए नियंत्रक पर एक विधि "डाउनलोड" पैदा करते हैं। homes_controller.php

<?php 
function download() 
{ 
    $this->set('orders', $this->Order->find('all')); 
    $this->layout = null; 
    $this->autoLayout = false; 
    Configure::write('debug', '0'); 
} 
?> 

चरण 4: 5 (अंतिम चरण)

देखें पर इस कोड डाल/होम्स: आप CSV

<?php 
echo $this->Html->link('Download',array('controller'=>'homes','action'=>'download'), array('target'=>'_blank')); 
?> 

चरण डाउनलोड करने के लिए है, जहां से पृष्ठ पर इस लिंक डाल /download.ctp

<?php 
$line= $orders[0]['Order']; 
$this->CSV->addRow(array_keys($line)); 
foreach ($orders as $order) 
{ 
     $line = $order['Order']; 
     $this->CSV->addRow($line); 
} 
$filename='orders'; 
echo $this->CSV->render($filename); 
?> 
+0

हाय सब कुछ ठीक से काम कर रहा है और स्थानीयहोस्ट में अच्छा है लेकिन अगर मैं ऑनलाइन कोशिश कर रहा हूं तो मैं पॉप-अप डाउनलोड नहीं कर पा रहा हूं लेकिन ब्राउज़र ब्राउज़र में ही गूंज रहा है। कृपया मुझे कोई समाधान सुझाएं। –

+0

निर्यात किए गए एक्सेल फ़ाइल में भी HTML कोड प्राप्त करना .. फिर उस कोड के नीचे मेरी वांछित डेटा सूची है। किसी भी मदद फ़ाइल में निर्यात कोड क्यों है ?? –

+0

क्या यह केकफ़्पी 3 में काम कर रहा है? – Faisal

1

हाल ही में, मैंने कुछ परियोजनाओं में काम किया है जिन्हें एक्सएलएस और सीएसवी में डेटा निर्यात करने की आवश्यकता है। इन सहायकों वास्तव में अच्छा काम करते हैं:

http://bakery.cakephp.org/articles/ifunk/2007/09/10/csv-helper-php5

http://bakery.cakephp.org/articles/wasenbr/2007/04/12/excel-xls-helper

+0

हम दोनों एक साथ आयात नहीं कर सकते कुछ विकल्प चयन के साथ ही , जैसे कि आप सीएसवी या एक्सेल चाहते हैं, बल्कि दो अलग हैं lpers? –

1

cakePHP भीतर PHPExcel उपयोग के बारे में the bakery में एक लेख है। यह लाइब्रेरी कई अलग-अलग प्रारूपों में स्प्रेडशीट डेटा लिखने के विकल्प प्रदान करती है। लिंक किए गए बेकरी लेख में दिए गए उदाहरण xls और xlsx फ़ाइलों के लिए हैं, लेकिन सीएसवी भी एक विकल्प है।

1

कोई जरूरत किसी भी घटक या हेल्पर

महान ट्यूटोरियल http://andy-carter.com/blog/exporting-data-to-a-downloadable-csv-file-with-cakephp

नियंत्रक

public function export() { 
    $this->response->download("export.csv"); 
    $data = $this->Subscriber->find('all'); 
    $this->set(compact('data')); 
    $this->layout = 'ajax'; 
    return; 
} 

route.php

Router::parseExtensions('csv'); 

export.ctp फ़ाइल

<?php 
app/Views/Subscribers/export.ctp 
foreach ($data as $row): 
foreach ($row['Subscriber'] as &$cell): 
    // Escape double quotation marks 
    $cell = '"' . preg_replace('/"/','""',$cell) . '"'; 
endforeach; 
echo implode(',', $row['Subscriber']) . "\n"; 
endforeach; 
?> 
+0

की आवश्यकता है, आप मूल लेखक को क्रेडिट करना भूल गए: http: // andy-carter।कॉम/ब्लॉग/निर्यात-डेटा-टु-ए-डाउनलोड करने योग्य-सीएसवी-फ़ाइल-साथ-CakePHP – rocknrollcanneverdie

संबंधित मुद्दे