Clădire CSV cu matrice

Trebuie să rulez o interogare care va returna mai multe rânduri și va exporta un CSV. Trebuie să pun celulele într-o anumită ordine.

Așadar, permiteți-mi să spun că tabelul meu este prezentat id, nume, adresă, soție. Trebuie să construiesc un csv în ordinea id-ului, adresa, soția, numele. M-am gândit că aș putea face o matrice în ordinea corectă și apoi să fac un csv cu asta, dar după o oră de googling nu cant afla cum să facă un csv cu o matrice.

Există fputcsv dar necesită un csv pre-made. De asemenea, speram ca exista un mod de codificare a codului.

 public function export() {
    $this->load->helper('download');

    $data[1] = 'i like pie';
    $data[2] = 'i like cake';
    force_download('result.csv', $data);  
}

Am încercat asta, dar eroarea a spus că fișierul helper de descărcare se aștepta la un șir nu la un matrice.

0

2 răspunsuri

Here's some code I use... you could adjust the columns you need in the export...

Note: This CSV is directly sent to php://output which writes directly to the output buffer. This means you're not saving any .csv files on the server and it can handle a much larger file size that building a giant array and then trying to loop through it.

    header("Content-type: application/csv");
    header("Content-Disposition: attachment; filename=\"Jobs_".date('M.j.y', $from)."-".date('M.j.y', $to).".csv\"");
    header("Pragma: no-cache");
    header("Expires: 0");

    $handle = fopen('php://output', 'w');
    fputcsv($handle, array(
        'JobId',
        'Template',
        'Customer',
        'Status',
        'Error',
        'PDF',
        'Run Time',
        'Wait Time',
        'Server'
    ));

    foreach ($jobs as $jobData) {
        fputcsv($handle, array(
            $job->getId(),
            $job->getTemplate(),
            $jobData['customers_firstname'].' '.$jobData['customers_lastname'],
            $status,
            $error,
            $jobData['products_pdfupload'],
            $job->getRunTime(),
            $job->getWaitTime(),
            $jobData['server']
        ));
    }

    fclose($handle);
    exit;

Acest lucru ar trebui să vă ofere o imagine bună despre modul în care funcționează un export CSV. Nu folosesc ajutorul de descărcare a fișierelor CodeIgniter, așa că nu te pot ajuta în acest sens.

0
adăugat

Aceste scripturi scurte construiesc CSV-ul și vă permit să îl descărcați și:

function convert_to_csv($input_array, $output_file_name, $delimiter)
{
    /** open raw memory as file, no need for temp files */
    $temp_memory = fopen('php://memory', 'w');
    /** loop through array */
    foreach ($input_array as $line) {
        /** default PHP csv handler **/
        fputcsv($temp_memory, $line, $delimiter);
    }
    /** rewrind the "file" with the csv lines **/
    fseek($temp_memory, 0);
    /** modify header to be downloadable csv file **/
    header('Content-Type: application/csv');
    header('Content-Disposition: attachement; filename="' . $output_file_name . '";');
    /** Send file to browser for download */
    fpassthru($temp_memory);
}

/** Array to convert to csv */
$array_to_csv = Array(Array(12566, 'Enmanuel', 'Corvo'), Array(56544, 'John', 'Doe'), Array(78550, 'Mark', 'Smith'));
convert_to_csv($array_to_csv, 'report.csv', ',');

Puteți citi postul complet aici:

PHP Array în CSV - descărcare

0
adăugat
PHP România, Moldova
PHP România, Moldova
173 participanți

Vorbim despre Yii, Laravel, Symphony, MySQL, PgSQL, WP, OpenCart... Pentru confort, opriți notificările. Parteneri: https://ciupacabra.com @js_ro @node_ro @python_ro @seo_ro @Romania_Bot Offtop: @holywars_ro Joburi: @php_job @Grupuri_IT