Vytváříme UTF-8 CSV pro Excel

25. 04. 2018

Občas potřebujete vyexportovat nějakou tu tabulku pro Excel a další tabulkové editory. CSV uložené v kódování UTF-8 se zdá být dostatečně univerzálním formátem, aby si s ním poradilo programové vybavení každého počítače.

Ovšem zdání klame. Pokud vytvoříte „obyčejné“ UTF-8 CSV, zmlsaný Excel z něj dostane vyrážku v podobě rozsypaného čaje u znaků ležících mimo ASCII.

Naštěstí existuje kouzelný lektvar s kódovým označením BOM (Byte order mark), který nemoc našeho CSV vyléčí. Jsou to tři magické bajty, které je třeba umístit na úplný začátek CSV. Excel podle těchto bytů pozná, že soubor je v UTF-8. Bohužel problém může nastat u editorů, které BOM nepodporují.

Kód pro report stavu majetku vaší firmy:

//headers
header('Pragma: public');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Content-Description: File Transfer');
header('Content-Type: text/csv');
header('Content-Disposition: attachment; filename=export.csv;');
header('Content-Transfer-Encoding: binary');

//open file pointer to standard output
$fp = fopen('php://output', 'w');

//add BOM to fix UTF-8 in Excel
fputs($fp, $bom =( chr(0xEF) . chr(0xBB) . chr(0xBF) ));
if ($fp)
{
fputcsv($fp, array("Cars", "Planes", "Ships"), ";");
fputcsv($fp, array("12", "2", "6"), ";");
fputcsv($fp, array("23", "3", "5"), ";");
fputcsv($fp, array("31", "5", "8"), ";");
}

fclose($fp);

Edit 2017-11-30: Ukázalo se, že tento trik funguje pouze s novějšími verzemi Excel 2007. Pokud vám tedy nefunguje, zkuste aktualizovat.

Nejstahovanější aplikace ve válce: Které to jsou a proč?

*Původně vydáno jako newslettrový díl ze sekce „Sdílíme, co víme“ pod #skoumámRád. Mobilní aplikace, které si stahujeme, často zrcadlí to, …

Číst článek

Chceš dělat iOS aplikaci pro průmysl? Máš rád/a svoji svobodu?

Pojď s námi programovat iOS apky, které mají hmatatelný dopad.  Řiď si vlastní čas v rámci remote-first týmu. Je nám …

Číst článek

Jak vyplnit Data Safety sekci na Google Play

Google Play čistí svůj obchod. Nové Store Listing Guidelines upravují záznamy (listing) v obchodě a neakceptují žádná marketingová prázdná slová, …

Číst článek

Analytika v roce 2022: Jaké jsou nové trendy a co se změní?

Používáte data pro důležitá byznysová a marketingová rozhodnutí? Pokud ne, určitě s analytikou začněte. Mýlíme se příliš často – 3-6 krát …

Číst článek

Chci vědět víc