Quantcast
Channel: PHPExcel Forum Rss Feed
Viewing all articles
Browse latest Browse all 2707

New Post: how could i possibly setting the reader to format certain data like data type of date(Microsoft Excel reader)

$
0
0

After a series of debugging I come up with the following:

publicfunction rangeToArray($pRange = 'A1', $nullValue = null, $calculateFormulas = true, $formatData = true, $returnCellRef = false) {
		// Returnvalue
		$returnValue = array();

		//	Identify the range that we need to extract from the worksheetlist($rangeStart, $rangeEnd) = PHPExcel_Cell::rangeBoundaries($pRange);
		$minCol = PHPExcel_Cell::stringFromColumnIndex($rangeStart[0] -1);
		$minRow = $rangeStart[1];
		$maxCol = PHPExcel_Cell::stringFromColumnIndex($rangeEnd[0] -1);
		$maxRow = $rangeEnd[1];

		$maxCol++;

		// Loop through rows
		$r = -1; $k=0;
		for ($row = $minRow; $row <= $maxRow; ++$row) {
			$rRef = ($returnCellRef) ? $row : ++$r;
			$c = -1;
							$z=0;
			// Loop through columns in the current rowfor ($col = $minCol; $col != $maxCol; ++$col) {
				$cRef = ($returnCellRef) ? $col : ++$c;
				//	Using getCell() will create a new cell if it doesn't already exist. We don't want that to happen//		so we test and retrieve directly against _cellCollectionif ($this->_cellCollection->isDataSet($col.$row)) {
					// Cell exists
					$cell = $this->_cellCollection->getCacheData($col.$row);
					
					if(PHPExcel_Shared_Date::isDateTime($cell)) {
						$this->_parent->getCellXfByIndex($cell->getXfIndex())->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_YYYYMMDD2);
					}
					if ($cell->getValue() !== null) {
						if ($cell->getValue() instanceof PHPExcel_RichText) {
							$returnValue[$rRef][$cRef] = $cell->getValue()->getPlainText();
						} else {
							if ($calculateFormulas) {
								$returnValue[$rRef][$cRef] = $cell->getCalculatedValue();
							} else {
								$returnValue[$rRef][$cRef] = $cell->getValue();
							}
						}

						if ($formatData) {
							$style = $this->_parent->getCellXfByIndex($cell->getXfIndex());
							/* Here is the line I changed */
								$returnValue[$rRef][$cRef] = PHPExcel_Style_NumberFormat::toFormattedString($returnValue[$rRef][$cRef], $style->getNumberFormat()->getFormatCode());
							/* End */
						}
					} else {
						// Cell holds a NULL
						$returnValue[$rRef][$cRef] = $nullValue;
					}
				} else {
					// Cell doesn't exist
					$returnValue[$rRef][$cRef] = $nullValue;
				}
			}
		}
		//print_r($returnValue);// Returnreturn $returnValue;
	}

cheers!


Viewing all articles
Browse latest Browse all 2707

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>