Detect the presence of a sep=; line in CSV imports, and set the delimiter accordingly

This commit is contained in:
MarkBaker 2016-03-17 23:05:14 +00:00
parent b9ae7d1873
commit 2e0e9b2398
1 changed files with 19 additions and 0 deletions

View File

@ -150,6 +150,23 @@ class CSV extends BaseReader implements IReader
} }
} }
/**
* 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) * Return worksheet info (Name, Last Column Letter, Last Column Index, Total Rows, Total Columns)
* *
@ -168,6 +185,7 @@ class CSV extends BaseReader implements IReader
// Skip BOM, if any // Skip BOM, if any
$this->skipBOM(); $this->skipBOM();
$this->checkSeparator();
$escapeEnclosures = array( "\\" . $this->enclosure, $this->enclosure . $this->enclosure ); $escapeEnclosures = array( "\\" . $this->enclosure, $this->enclosure . $this->enclosure );
@ -232,6 +250,7 @@ class CSV extends BaseReader implements IReader
// Skip BOM, if any // Skip BOM, if any
$this->skipBOM(); $this->skipBOM();
$this->checkSeparator();
// Create new PHPExcel object // Create new PHPExcel object
while ($objPHPExcel->getSheetCount() <= $this->sheetIndex) { while ($objPHPExcel->getSheetCount() <= $this->sheetIndex) {