| 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: 13 let
|
|||
0