Autor | Zpráva | ||
---|---|---|---|
Cakewalk Profil |
#1 · Zasláno: 17. 5. 2013, 08:37:07
Na téma exportu dat do CSV s podporou diakritiky je spousta rad, z nichž některé lze využít a některé ne. Největší problém je otevření souboru v Excelu. Ten si s diakritikou vůbec neporadí. Osobně se mi osvědčilo použití BOM:
$titleString = implode($delimiter, $titleArray); print chr(0xEF) . chr(0xBB) . chr(0xBF).$titleString . "\r\n"; Bohužel mi použití BOM neprovede implode. Neví někdo, jak to vyřešit? Díky |
||
peta Profil |
#2 · Zasláno: 17. 5. 2013, 10:19:42
???
Jak BOM souvisi s implode? Navic, php ma na konverzi do csv vlastni funkce, ale implode se da pouzit. Pokud jsou data v utf-8, tak je nutne pridat BOM na zacatek souboru, jinak ma excel s diakritikou problem. To je fakt a funguje mi to. Myslim si, ze ta cast kodu, co jsi sem dal, by mohla fungovat bez potizi. Mozna by bylo dobre videt vystup souboru a link na php zdrojak. Treba v nema mas neco navic, radek pred BOm a tak. |
||
Cakewalk Profil |
#3 · Zasláno: 17. 5. 2013, 10:24:38
Jde o to, že po přidání BOM se zruší rozdělení do sloupců.
Podstatná část scriptu: $data = array(); while ($invoice_details = $db->fetch_array($sql_select_invoices)) { $history_row = $item->history_row($invoice_details, 1); $data [] = array ( AMSG_USER_DETAILS => '[ ' . MSG_ID . ': ' . $invoice_details['user_id'] . ' ] ' . $invoice_details['username'], MSG_ITEM_ID => $invoice_details['item_id'], MSG_INVOICE_NAME => $history_row['invoice_name'], GMSG_DATE => $history_row['date'], GMSG_AMOUNT => $history_row['amount']); } $titleArray = array_keys($data[0]); $delimiter = "\t"; $filename="Search_Export.xls"; header("Content-Encoding: UTF-8"); header("Content-type: text/csv; charset=UTF-8"); header("Content-Disposition: attachment; filename=$filename"); header ("Content-Type: application/vnd.ms-excel") ; header("Pragma: no-cache"); header("Expires: 0"); $titleString = implode($delimiter, $titleArray); print chr(0xEF) . chr(0xBB) . chr(0xBF).$titleString . "\r\n"; foreach ($data as $subArrayKey => $subArray) { $dataRowString = implode($delimiter, $subArray); print $dataRowString . "\r\n"; } exit; |
||
Časová prodleva: 11 let
|
0