From 79f95213e0bb73111d777966316fef4056a1fdb7 Mon Sep 17 00:00:00 2001 From: MarkBaker Date: Thu, 17 Mar 2016 22:52:07 +0000 Subject: [PATCH] Detect the presence of a sep=; line in CSV imports, and set the delimiter accordingly --- Classes/PHPExcel/Reader/CSV.php | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/Classes/PHPExcel/Reader/CSV.php b/Classes/PHPExcel/Reader/CSV.php index db96b60..194240f 100644 --- a/Classes/PHPExcel/Reader/CSV.php +++ b/Classes/PHPExcel/Reader/CSV.php @@ -157,6 +157,23 @@ class PHPExcel_Reader_CSV extends PHPExcel_Reader_Abstract implements PHPExcel_R } } + /** + * Identify any separator that is explicitly set in the file + * + */ + protected function checkSeparator() + { + $line = fgets($this->fileHandle); + if ($line === false) { + return; + } + + if ((strlen(trim($line)) == 5) && (strpos($line, 'sep=') !== 0)) { + return $this->skipBOM(); + } + $this->delimiter = substr($line, 4, 1); + } + /** * Return worksheet info (Name, Last Column Letter, Last Column Index, Total Rows, Total Columns) * @@ -175,6 +192,7 @@ class PHPExcel_Reader_CSV extends PHPExcel_Reader_Abstract implements PHPExcel_R // Skip BOM, if any $this->skipBOM(); + $this->checkSeparator(); $escapeEnclosures = array( "\\" . $this->enclosure, $this->enclosure . $this->enclosure ); @@ -239,6 +257,7 @@ class PHPExcel_Reader_CSV extends PHPExcel_Reader_Abstract implements PHPExcel_R // Skip BOM, if any $this->skipBOM(); + $this->checkSeparator(); // Create new PHPExcel object while ($objPHPExcel->getSheetCount() <= $this->sheetIndex) {