<?php
-# This file generates what Excell refers to as "CSV" files. This format makes
-# little sense, and does not actually have anything to do with commas.
+# These functions redutrn a csv download which is hopefully easy to import into
+# Excell and LibreOffice Calc
# pass in a 2d array (array of rows) and it'll send it to the browser
-# I can't figure out how to get multi-line fields to work, so replace newlines with 4 spaces.
+# I can't figure out how to get multi-line fields to work, so this replaces newlines with 4 spaces.
function array2d_to_csv_download($data, $filename) {
header('Content-type: application/csv');
header('Content-Disposition: attachment; filename=' . $filename);
if($first) {
$first = false;
} else {
- echo "\t";
+ echo ",";
}
echo '"' . str_replace("\n", " ", str_replace('"', '""', $el)) . '"';
}
}
exit();
}
+
+# pass an array of associative arrays. keys from the first one will be used
+# see arary2d_to_csv_download above for more details
+function assocs_to_csv_download($data, $filename) {
+ if(count($data) < 1) {
+ $flats = array();
+ } else {
+ $flats = array(array_keys($data[0]));
+ $keys =& $flats[0];
+ foreach($data as $row) {
+ $flat = array();
+ foreach($keys as $k) {
+ $flat[] = $row[$k];
+ }
+ $flats[] = $flat;
+ }
+ }
+ array2d_to_csv_download($flats, $filename);
+}