दिलचस्प पोस्ट
अप्रत्याशित अपवाद 'xxx' को 'xxx' पर 'वर्ग xxx' पर पकड़ लिया गया: त्रुटि 'अभिव्यक्ति' xxx 'के साथ मान मैं गतिशील रूप से सी # कोड का मूल्यांकन कैसे कर सकता हूं? यूट्यूब वीडियो WebView में नहीं खेल रहा है – एंड्रॉइड Django में स्थिरता लोड करते समय सामग्री प्रकार की समस्याएं पायथन की "इस यूनिकोड के लिए सबसे अच्छा ASCII" डेटाबेस कहां है? कैसे एक स्विच के अंदर से एक पाश से बाहर तोड़ने के लिए? फेसबुक आईफोन ऐप द्वारा समर्थित सभी कस्टम यूआरएल योजनाएं क्या हैं? एक यादृच्छिक संख्या उत्पन्न करने के लिए रैंड का उपयोग कर Android ImageView स्केलिंग और समस्या का अनुवाद करना नवनिर्मित ऑब्जेक्ट पर चेन विधि कैसे करें? एंड्रॉइड स्टूडियो में एक लाइब्रेरी प्रोजेक्ट और लायब्रेरी प्रोजेक्ट का उपयोग करने वाले एक एप्लिकेशन प्रोजेक्ट को कैसे तैयार किया जाए एक रिलेशनल डेटाबेस में ठीक है ना? अजगर xlrd के साथ Excel सेल से सूत्र प्राप्त करें Android ListView सेपरेटर लाइन का रंग कैसे बदल सकता है? जावास्क्रिप्ट में एक तारीख स्वरूपण पर दस्तावेज कहां मिल सकता है?

PHP के माध्यम से सीएसवी को निर्यात करें

मान लें कि मेरे पास एक डेटाबेस है …. क्या एक तरीका है कि मैं सीएसवी फ़ाइल में डाटाबेस से मेरे पास निर्यात कर सकता हूं (और यदि संभव हो तो) [PHP फाइल के माध्यम से]

वेब के समाधान से एकत्रित समाधान "PHP के माध्यम से सीएसवी को निर्यात करें"

मैं व्यक्तिगत रूप से किसी भी सरणी से सीएसवी सामग्री बनाने के लिए इस फ़ंक्शन का उपयोग कर रहा हूं।

function array2csv(array &$array) { if (count($array) == 0) { return null; } ob_start(); $df = fopen("php://output", 'w'); fputcsv($df, array_keys(reset($array))); foreach ($array as $row) { fputcsv($df, $row); } fclose($df); return ob_get_clean(); } 

तब आप अपने यूजर डाउनलोड कर सकते हैं जो कुछ ऐसा फाइल है जिसका प्रयोग करते हैं:

 function download_send_headers($filename) { // disable caching $now = gmdate("D, d MYH:i:s"); header("Expires: Tue, 03 Jul 2001 06:00:00 GMT"); header("Cache-Control: max-age=0, no-cache, must-revalidate, proxy-revalidate"); header("Last-Modified: {$now} GMT"); // force download header("Content-Type: application/force-download"); header("Content-Type: application/octet-stream"); header("Content-Type: application/download"); // disposition / encoding on response body header("Content-Disposition: attachment;filename={$filename}"); header("Content-Transfer-Encoding: binary"); } 

उपयोग का उदाहरण:

 download_send_headers("data_export_" . date("Ymd") . ".csv"); echo array2csv($array); die(); 

आप इस आदेश का उपयोग करके तिथि निर्यात कर सकते हैं।

 <?php $list = array ( array('aaa', 'bbb', 'ccc', 'dddd'), array('123', '456', '789'), array('"aaa"', '"bbb"') ); $fp = fopen('file.csv', 'w'); foreach ($list as $fields) { fputcsv($fp, $fields); } fclose($fp); ?> 

सबसे पहले आपको एक सरणी में mysql सर्वर से डेटा लोड करना होगा

बस रिकॉर्ड के लिए, fputcsv है (मुझे इसका मतलब है) fputcsv या fputcsv से; और फ़ाइल का आकार छोटा है:

 // The data from Eternal Oblivion is an object, always $values = (array) fetchDataFromEternalOblivion($userId, $limit = 1000); // ----- fputcsv (slow) // The code of @Alain Tiemblo is the best implementation ob_start(); $csv = fopen("php://output", 'w'); fputcsv($csv, array_keys(reset($values))); foreach ($values as $row) { fputcsv($csv, $row); } fclose($csv); return ob_get_clean(); // ----- implode (slow, but file size is smaller) $csv = implode(",", array_keys(reset($values))) . PHP_EOL; foreach ($values as $row) { $csv .= '"' . implode('","', $row) . '"' . PHP_EOL; } return $csv; // ----- concatenation (fast, file size is smaller) // We can use one implode for the headers =D $csv = implode(",", array_keys(reset($values))) . PHP_EOL; $i = 1; // This is less flexible, but we have more control over the formatting foreach ($values as $row) { $csv .= '"' . $row['id'] . '",'; $csv .= '"' . $row['name'] . '",'; $csv .= '"' . date('dm-Y', strtotime($row['date'])) . '",'; $csv .= '"' . ($row['pet_name'] ?: '-' ) . '",'; $csv .= PHP_EOL; } return $csv; 

यह कई रिपोर्टों के अनुकूलन का निष्कर्ष है, दस से हजार पंक्तियों में से तीन उदाहरणों ने 1000 पंक्तियों के तहत ठीक काम किया, लेकिन जब डेटा बड़ा हो गया तो विफल हो गया।

मैं सुझाता हूँ parsecsv-for-php नेस्टेड न्यूलाइन और उद्धरणों के साथ किसी भी मुद्दे को एक नंबर के आसपास प्राप्त करने के लिए।

पूर्व-निर्मित कोड यहां संलग्न है। आप इसे अपने कोड में कॉपी और पेस्ट करके इसका उपयोग कर सकते हैं:

https://gist.github.com/umairidrees/8952054#file-php-save-db-table-as-csv

जैसे @ डाम्पस 8 एन ने कहा:

 $result = mysql_query($sql,$conecction); $fp = fopen('file.csv', 'w'); while($row = mysql_fetch_assoc($result)){ fputcsv($fp, $row); } fclose($fp); 

उम्मीद है की यह मदद करेगा।

100 से अधिक लाइनों के साथ काम करता है, यदि आप शीर्ष लेख में फ़ाइल का आकार निर्दिष्ट करते हैं तो अपने खुद के वर्ग में प्राप्त () विधि को कॉल करें

 function setHeader($filename, $filesize) { // disable caching $now = gmdate("D, d MYH:i:s"); header("Expires: Tue, 01 Jan 2001 00:00:01 GMT"); header("Cache-Control: max-age=0, no-cache, must-revalidate, proxy-revalidate"); header("Last-Modified: {$now} GMT"); // force download header("Content-Type: application/force-download"); header("Content-Type: application/octet-stream"); header("Content-Type: application/download"); header('Content-Type: text/x-csv'); // disposition / encoding on response body if (isset($filename) && strlen($filename) > 0) header("Content-Disposition: attachment;filename={$filename}"); if (isset($filesize)) header("Content-Length: ".$filesize); header("Content-Transfer-Encoding: binary"); header("Connection: close"); } function getSql() { // return you own sql $sql = "SELECT id, date, params, value FROM sometable ORDER BY date;"; return $sql; } function getExportData() { $values = array(); $sql = $this->getSql(); if (strlen($sql) > 0) { $result = dbquery($sql); // opens the database and executes the sql ... make your own ;-) $fromDb = mysql_fetch_assoc($result); if ($fromDb !== false) { while ($fromDb) { $values[] = $fromDb; $fromDb = mysql_fetch_assoc($result); } } } return $values; } function get() { $values = $this->getExportData(); // values as array $csv = tmpfile(); $bFirstRowHeader = true; foreach ($values as $row) { if ($bFirstRowHeader) { fputcsv($csv, array_keys($row)); $bFirstRowHeader = false; } fputcsv($csv, array_values($row)); } rewind($csv); $filename = "export_".date("Ymd").".csv"; $fstat = fstat($csv); $this->setHeader($filename, $fstat['size']); fpassthru($csv); fclose($csv); }