Excel compatibility mode for CSV Writer
This commit is contained in:
parent
b8f783e5a3
commit
60c9bf391c
|
@ -22,7 +22,7 @@
|
||||||
* @package PHPExcel_Reader
|
* @package PHPExcel_Reader
|
||||||
* @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel)
|
* @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel)
|
||||||
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
|
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
|
||||||
* @version ##VERSION##, ##DATE##
|
* @version 1.7.9, 2013-06-02
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -114,18 +114,19 @@ class PHPExcel_Writer_CSV extends PHPExcel_Writer_Abstract implements PHPExcel_W
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($this->_excelCompatibility) {
|
if ($this->_excelCompatibility) {
|
||||||
// Write the UTF-16LE BOM code
|
fwrite($fileHandle, "\xEF\xBB\xBF"); // Enforce UTF-8 BOM Header
|
||||||
fwrite($fileHandle, "\xFF\xFE"); // Excel uses UTF-16LE encoding
|
$this->setEnclosure('"'); // Set enclosure to "
|
||||||
$this->setEnclosure(); // Default enclosure is "
|
$this->setDelimiter(";"); // Set delimiter to a semi-colon
|
||||||
$this->setDelimiter("\t"); // Excel delimiter is a TAB
|
$this->setLineEnding("\r\n");
|
||||||
|
fwrite($fileHandle, 'sep=' . $this->getDelimiter() . $this->_lineEnding);
|
||||||
} elseif ($this->_useBOM) {
|
} elseif ($this->_useBOM) {
|
||||||
// Write the UTF-8 BOM code
|
// Write the UTF-8 BOM code if required
|
||||||
fwrite($fileHandle, "\xEF\xBB\xBF");
|
fwrite($fileHandle, "\xEF\xBB\xBF");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Identify the range that we need to extract from the worksheet
|
// Identify the range that we need to extract from the worksheet
|
||||||
$maxCol = $sheet->getHighestColumn();
|
$maxCol = $sheet->getHighestDataColumn();
|
||||||
$maxRow = $sheet->getHighestRow();
|
$maxRow = $sheet->getHighestDataRow();
|
||||||
|
|
||||||
// Write rows to file
|
// Write rows to file
|
||||||
for($row = 1; $row <= $maxRow; ++$row) {
|
for($row = 1; $row <= $maxRow; ++$row) {
|
||||||
|
@ -300,11 +301,7 @@ class PHPExcel_Writer_CSV extends PHPExcel_Writer_Abstract implements PHPExcel_W
|
||||||
$line .= $this->_lineEnding;
|
$line .= $this->_lineEnding;
|
||||||
|
|
||||||
// Write to file
|
// Write to file
|
||||||
if ($this->_excelCompatibility) {
|
|
||||||
fwrite($pFileHandle, mb_convert_encoding($line,"UTF-16LE","UTF-8"));
|
|
||||||
} else {
|
|
||||||
fwrite($pFileHandle, $line);
|
fwrite($pFileHandle, $line);
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
throw new PHPExcel_Writer_Exception("Invalid data row passed to CSV writer.");
|
throw new PHPExcel_Writer_Exception("Invalid data row passed to CSV writer.");
|
||||||
}
|
}
|
||||||
|
|
|
@ -121,6 +121,17 @@ $objRichText->createText(', unless specified otherwise on the invoice.');
|
||||||
$objPHPExcel->getActiveSheet()->setCellValue('A13', 'Rich Text')
|
$objPHPExcel->getActiveSheet()->setCellValue('A13', 'Rich Text')
|
||||||
->setCellValue('C13', $objRichText);
|
->setCellValue('C13', $objRichText);
|
||||||
|
|
||||||
|
|
||||||
|
$objRichText2 = new PHPExcel_RichText();
|
||||||
|
$objRichText2->createText("black text\n");
|
||||||
|
|
||||||
|
$objRed = $objRichText2->createTextRun("red text");
|
||||||
|
$objRed->getFont()->setColor( new PHPExcel_Style_Color(PHPExcel_Style_Color::COLOR_RED ) );
|
||||||
|
|
||||||
|
$objPHPExcel->getActiveSheet()->getCell("C14")->setValue($objRichText2);
|
||||||
|
$objPHPExcel->getActiveSheet()->getStyle("C14")->getAlignment()->setWrapText(true);
|
||||||
|
|
||||||
|
|
||||||
$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setAutoSize(true);
|
$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setAutoSize(true);
|
||||||
$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setAutoSize(true);
|
$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setAutoSize(true);
|
||||||
|
|
||||||
|
|
|
@ -123,6 +123,16 @@ $objPHPExcel->getActiveSheet()->setCellValue('A13', 'Rich Text')
|
||||||
->setCellValue('C13', $objRichText);
|
->setCellValue('C13', $objRichText);
|
||||||
|
|
||||||
|
|
||||||
|
$objRichText2 = new PHPExcel_RichText();
|
||||||
|
$objRichText2->createText("black text\n");
|
||||||
|
|
||||||
|
$objRed = $objRichText2->createTextRun("red text");
|
||||||
|
$objRed->getFont()->setColor( new PHPExcel_Style_Color(PHPExcel_Style_Color::COLOR_RED ) );
|
||||||
|
|
||||||
|
$objPHPExcel->getActiveSheet()->getCell("C14")->setValue($objRichText2);
|
||||||
|
$objPHPExcel->getActiveSheet()->getStyle("C14")->getAlignment()->setWrapText(true);
|
||||||
|
|
||||||
|
|
||||||
$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setAutoSize(true);
|
$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setAutoSize(true);
|
||||||
$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setAutoSize(true);
|
$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setAutoSize(true);
|
||||||
|
|
||||||
|
|
|
@ -38,7 +38,7 @@ date_default_timezone_set('Europe/London');
|
||||||
include "05featuredemo.inc.php";
|
include "05featuredemo.inc.php";
|
||||||
|
|
||||||
/** PHPExcel_IOFactory */
|
/** PHPExcel_IOFactory */
|
||||||
require_once dirname(__FILE__) . '/../Classes/PHPExcel/IOFactory.php';
|
require_once '../Classes/PHPExcel/IOFactory.php';
|
||||||
|
|
||||||
|
|
||||||
echo date('H:i:s') , " Write to CSV format" , EOL;
|
echo date('H:i:s') , " Write to CSV format" , EOL;
|
||||||
|
@ -85,6 +85,20 @@ echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds"
|
||||||
echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL;
|
echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL;
|
||||||
|
|
||||||
|
|
||||||
|
echo date('H:i:s') , " Write to CSV format" , EOL;
|
||||||
|
$callStartTime = microtime(true);
|
||||||
|
|
||||||
|
$objWriterCSV = PHPExcel_IOFactory::createWriter($objPHPExcelFromCSV, 'CSV');
|
||||||
|
$objWriterCSV->setExcelCompatibility(true);
|
||||||
|
$objWriterCSV->save(str_replace('.php', '_excel.csv', __FILE__));
|
||||||
|
$callEndTime = microtime(true);
|
||||||
|
$callTime = $callEndTime - $callStartTime;
|
||||||
|
echo date('H:i:s') , " File written to " , str_replace('.php', '_excel.csv', pathinfo(__FILE__, PATHINFO_BASENAME)) , EOL;
|
||||||
|
echo 'Call time to write Workbook was ' , sprintf('%.4f',$callTime) , " seconds" , EOL;
|
||||||
|
// Echo memory usage
|
||||||
|
echo date('H:i:s') , ' Current memory usage: ' , (memory_get_usage(true) / 1024 / 1024) , " MB" , EOL;
|
||||||
|
|
||||||
|
|
||||||
// Echo memory peak usage
|
// Echo memory peak usage
|
||||||
echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL;
|
echo date('H:i:s') , " Peak memory usage: " , (memory_get_peak_usage(true) / 1024 / 1024) , " MB" , EOL;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue