Export CSV for Excel

前端 未结 5 1265
耶瑟儿~
耶瑟儿~ 2020-12-29 16:58

I\'m writing a CSV file in PHP using fputcsv($file, $data). It all works, however I can\'t just open it in Excel but have to import it and specify the encoding

5条回答
  •  被撕碎了的回忆
    2020-12-29 17:33

    This is how I make Excel readable CSV files from PHP :

    • Add BOM to fix UTF-8 in Excel
    • Set semi-colon (;) as delimeter
    • Set correct header ("Content-Type: text/csv; charset=utf-8")

    For exemple :

    $headers = array('Lastname :', 'Firstname :');
    $rows = array(
        array('Doe', 'John'),
        array('Schlüter', 'Rudy'),
        array('Alvarez', 'Niño')
    );
    
    // Create file and make it writable
    
    $file = fopen('file.csv', 'w');
    
    // Add BOM to fix UTF-8 in Excel
    
    fputs($file, $bom = (chr(0xEF) . chr(0xBB) . chr(0xBF)));
    
    // Headers
    // Set ";" as delimiter
    
    fputcsv($file, $headers, ";");
    
    // Rows
    // Set ";" as delimiter
    
    foreach ($rows as $row) {
    
        fputcsv($file, $row, ";");
    }
    
    // Close file
    
    fclose($file);
    
    // Send file to browser for download
    
    $dest_file = 'file.csv';
    $file_size = filesize($dest_file);
    
    header("Content-Type: text/csv; charset=utf-8");
    header("Content-disposition: attachment; filename=\"file.csv\"");
    header("Content-Length: " . $file_size);
    readfile($dest_file);
    

    Works with Excel 2013.

提交回复
热议问题