Export to CSV/Excel
CSV export क्या है
CSV export users को data — orders, students, sales की list — spreadsheet file के रूप में download करने देता है। CSV plain text है जहाँ हर line एक row है और commas columns अलग करते हैं। चूँकि Excel और Google Sheets इसे सीधे खोलते हैं, यह users को data देने का standard तरीका है।
fputcsv से लिखिए।Download headers
ये headers, किसी भी output से पहले भेजे, browser को response को file के रूप में download करने को कहते हैं।
<?php
header("Content-Type: text/csv");
header('Content-Disposition: attachment; filename="data.csv"');
?>
Content-Type कहता है यह CSV है; Content-Disposition: attachment दिए filename के साथ download मजबूर करता है। इनसे पहले कोई output (एक space भी नहीं) नहीं होना चाहिए।
fputcsv से rows लिखना
<?php
header("Content-Type: text/csv");
header('Content-Disposition: attachment; filename="data.csv"');
$out = fopen("php://output", "w");
fputcsv($out, ["Name", "Marks"]); // header row
fputcsv($out, ["Aman", 88]);
fputcsv($out, ["Diya", 92]);
fclose($out);
?>
Aman,88
Diya,92
हम php://output (browser download stream) खोलते हैं और हर row को fputcsv से लिखते हैं, जो हमारे लिए commas और quotes सही format करता है।
MySQL से export
<?php
header("Content-Type: text/csv");
header('Content-Disposition: attachment; filename="students.csv"');
$out = fopen("php://output", "w");
fputcsv($out, ["Name", "Marks"]); // column titles
$stmt = $pdo->query("SELECT name, marks FROM students");
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
fputcsv($out, [$row["name"], $row["marks"]]);
}
fclose($out);
?>
column नामों की एक header row लिखिए, फिर database results में loop करके हर एक को CSV row के रूप में लिखिए। Browser खुलने-को-तैयार spreadsheet download करता है।
Excel में खोलना
Download की .csv Excel या Google Sheets में सीधे खुलती है — हर comma column सीमा बनता है, हर line एक row। non-English text के लिए, पहले UTF-8 BOM लिखिए ताकि accents और Hindi सही दिखें:
<?php
echo "\xEF\xBB\xBF"; // Excel के लिए UTF-8 BOM
?>
आम गलतियाँ
- Headers से पहले output। पहले कोई space या echo "headers already sent" देता है।
- हाथ से commas से values जोड़ना।
fputcsvइस्तेमाल कीजिए ताकि commas या quotes वाली values संभलें। - Header row भूलना। column titles बिना file पढ़ना मुश्किल।
- Hindi/accents के लिए गलत encoding। UTF-8 BOM जोड़िए ताकि Excel उन्हें सही दिखाए।
सारांश
- CSV plain-text spreadsheet format है जो Excel में खुलता है।
- Download मजबूर करने को
Content-TypeऔरContent-Dispositionheaders भेजिए। - Rows को
fputcsvसेphp://outputपर लिखिए। - MySQL से export को results में loop करके हर row लिखिए।
- Excel में सही Hindi/accented text को UTF-8 BOM जोड़िए।
आगे, पहले data पढ़िए PHP CRUD से, या सुरक्षित connect कीजिए PHP MySQL connection से।
अक्सर पूछे जाने वाले प्रश्न (FAQ)
CSV file क्या है?
Browser को CSV download कैसे करवाऊँ?
Content-Type: text/csv और Content-Disposition: attachment; filename="data.csv"। ये browser को response को दिखाने के बजाय file के रूप में download करने को कहते हैं।fputcsv क्या करता है?
fputcsv एक array लेकर उसे एक सही format वाली CSV row के रूप में लिखता है, values के अंदर के commas और quotes अपने-आप संभालकर। यह खुद commas से values जोड़ने से ज़्यादा सुरक्षित है।MySQL data को CSV में कैसे export करूँ?
fputcsv से लिखिए। download headers पहले भेजिए ताकि browser इसे file के रूप में save करे।Headers से पहले कोई output क्यों नहीं?
header() calls से पहले कोई spaces या echoes न हों।