/** * Generates a table based on the provided file and shows a preview */ public function previewFileTable($table_data) { if (!empty($table_data['file'])) { $xls_url = urldecode($table_data['file']); if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') { $xls_url = str_replace(site_url(), str_replace('\\', '/', ABSPATH), $xls_url); } else { $xls_url = str_replace(site_url(), ABSPATH, $xls_url); } } else { return _('Empty file', 'wpdatatables'); } require_once WDT_ROOT_PATH . '/lib/phpExcel/PHPExcel.php'; $objPHPExcel = new PHPExcel(); if (strpos(strtolower($xls_url), '.xlsx')) { $objReader = new PHPExcel_Reader_Excel2007(); $objReader->setReadDataOnly(true); } elseif (strpos(strtolower($xls_url), '.xls')) { $objReader = new PHPExcel_Reader_Excel5(); $objReader->setReadDataOnly(true); } elseif (strpos(strtolower($xls_url), '.ods')) { $objReader = new PHPExcel_Reader_OOCalc(); $objReader->setReadDataOnly(true); } elseif (strpos(strtolower($xls_url), '.csv')) { $objReader = new PHPExcel_Reader_CSV(); } else { return _('File format not supported!', 'wpdatatables'); } $objPHPExcel = $objReader->load($xls_url); $objWorksheet = $objPHPExcel->getActiveSheet(); $highestRow = $objWorksheet->getHighestRow(); $highestRow = $highestRow > 5 ? 5 : $highestRow; $highestColumn = $objWorksheet->getHighestColumn(); $headingsArray = $objWorksheet->rangeToArray('A1:' . $highestColumn . '1', null, true, true, true); $headingsArray = $headingsArray[1]; $r = -1; $namedDataArray = array(); for ($row = 2; $row <= $highestRow; ++$row) { $dataRow = $objWorksheet->rangeToArray('A' . $row . ':' . $highestColumn . $row, null, true, true, true); if (isset($dataRow[$row]['A']) && $dataRow[$row]['A'] > '') { ++$r; foreach ($headingsArray as $dataColumnIndex => $dataColumnHeading) { $namedDataArray[$r][$dataColumnHeading] = $dataRow[$row][$dataColumnIndex]; if (WDT_DETECT_DATES_IN_EXCEL) { $cellID = $dataColumnIndex . $row; if (PHPExcel_Shared_Date::isDateTime($objPHPExcel->getActiveSheet()->getCell($cellID))) { $namedDataArray[$r][$dataColumnHeading] = PHPExcel_Shared_Date::ExcelToPHP($dataRow[$row][$dataColumnIndex]); } } } } } $columnTypeArray = WDTTools::detectColumnDataTypes($namedDataArray, $headingsArray); $possibleColumnTypes = WDTTools::getPossibleColumnTypes(); $ret_val = ''; if (!empty($namedDataArray)) { ob_start(); include WDT_TEMPLATE_PATH . 'constructor_file_preview.inc.php'; $ret_val = ob_get_contents(); ob_end_clean(); } return $ret_val; }
public function arrayBasedConstruct($rawDataArr, $wdtParameters) { if (empty($rawDataArr)) { if (!isset($wdtParameters['data_types'])) { $rawDataArr = array(0 => array('No data' => 'No data')); } else { $arrayEntry = array(); foreach ($wdtParameters['data_types'] as $cKey => $cType) { $arrayEntry[$cKey] = $cKey; } $rawDataArr[] = $arrayEntry; } $this->setNoData(true); } $headerArr = WDTTools::extractHeaders($rawDataArr); $wdtColumnTypes = isset($wdtParameters['data_types']) ? $wdtParameters['data_types'] : array(); if (empty($wdtColumnTypes)) { $wdtColumnTypes = WDTTools::detectColumnDataTypes($rawDataArr, $headerArr); } if (empty($wdtColumnTypes)) { foreach ($headerArr as $key) { $wdtColumnTypes[$key] = 'string'; } } $this->createColumnsFromArr($headerArr, $wdtParameters, $wdtColumnTypes); $this->_wdtColumnTypes = $wdtColumnTypes; if (!$this->getNoData()) { $this->_dataRows = $rawDataArr; } return true; }