Quiero integrar la opción de exportación de Excel/CSV con mi sitio web CakePHP, ¿alguna idea sobre los componentes disponibles o los ayudantes?cakephp componente de exportación excel/csv
Gracias!
Quiero integrar la opción de exportación de Excel/CSV con mi sitio web CakePHP, ¿alguna idea sobre los componentes disponibles o los ayudantes?cakephp componente de exportación excel/csv
Gracias!
Esta solución es para CakePHP 2.0 .. u también puede integrarla en CakePHP 1.3
Paso 1: Guarde el archivo siguiente como Csv.php en su aplicación/directorio/ayudante Ver
<?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);
}
}
?>
paso 2: Añadir este Asistente a su controlador:
var $helpers = array('Html', 'Form','Csv');
paso 3: crear un método de “descarga” en el controlador para, por ejemplo. homes_controller.php
<?php
function download()
{
$this->set('orders', $this->Order->find('all'));
$this->layout = null;
$this->autoLayout = false;
Configure::write('debug', '0');
}
?>
Paso 4: ésta enlace en la página desde donde se tiene que descargar
<?php
echo $this->Html->link('Download',array('controller'=>'homes','action'=>'download'), array('target'=>'_blank'));
?>
Paso CSV: Casas 5 (paso final)
Pon este código en Ver//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);
?>
Recientemente, he trabajado en algunos proyectos que requieren la exportación de datos en XLS y CSV. Estos ayudantes trabajan muy agradable:
http://bakery.cakephp.org/articles/ifunk/2007/09/10/csv-helper-php5
http://bakery.cakephp.org/articles/wasenbr/2007/04/12/excel-xls-helper
no podemos importar los dos juntos con un poco de selección única opción , como si quiere CSV o Excel, más bien dos ¿lpers? –
hay un artículo en the bakery sobre el uso de PHPExcel dentro de CakePHP. Esta biblioteca proporciona opciones para escribir datos de hoja de cálculo en una variedad de formatos diferentes. Los ejemplos dados en el artículo de panadería vinculado son para archivos xls y xlsx, pero csv también es una opción.
No hay necesidad de cualquier componente o ayudante
gran tutorial http://andy-carter.com/blog/exporting-data-to-a-downloadable-csv-file-with-cakephp
controlador
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');
archivo 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;
?>
Ha olvidado dar crédito al autor original: http: // andy-carter.com/blog/exporting-data-to-a-downloadable-csv-file-with-cakephp – rocknrollcanneverdie
Hola, todo está funcionando bien en Localhost pero, si lo intento en línea, no puedo obtener una ventana emergente de descarga, pero los datos se repiten en el navegador. Por favor sugiérame alguna solución. –
obteniendo el código HTML también en el archivo Excel exportado ... luego debajo del código tengo mi lista de datos deseada. ¿Alguna ayuda por qué su código de exportación también en el archivo? –
¿Está trabajando en cakephp 3? – Faisal