You are here

public function PHPExcel_Reader_SYLK::listWorksheetInfo in Loft Data Grids 7.2

Same name and namespace in other branches
  1. 6.2 vendor/phpoffice/phpexcel/Classes/PHPExcel/Reader/SYLK.php \PHPExcel_Reader_SYLK::listWorksheetInfo()

* Return worksheet info (Name, Last Column Letter, Last Column Index, Total Rows, Total Columns) * *

Parameters

string $pFilename: * @throws PHPExcel_Reader_Exception

File

vendor/phpoffice/phpexcel/Classes/PHPExcel/Reader/SYLK.php, line 134

Class

PHPExcel_Reader_SYLK
PHPExcel_Reader_SYLK

Code

public function listWorksheetInfo($pFilename) {

  // Open file
  $this
    ->_openFile($pFilename);
  if (!$this
    ->_isValidFormat()) {
    fclose($this->_fileHandle);
    throw new PHPExcel_Reader_Exception($pFilename . " is an Invalid Spreadsheet file.");
  }
  $fileHandle = $this->_fileHandle;
  rewind($fileHandle);
  $worksheetInfo = array();
  $worksheetInfo[0]['worksheetName'] = 'Worksheet';
  $worksheetInfo[0]['lastColumnLetter'] = 'A';
  $worksheetInfo[0]['lastColumnIndex'] = 0;
  $worksheetInfo[0]['totalRows'] = 0;
  $worksheetInfo[0]['totalColumns'] = 0;

  // Loop through file
  $rowData = array();

  // loop through one row (line) at a time in the file
  $rowIndex = 0;
  while (($rowData = fgets($fileHandle)) !== FALSE) {
    $columnIndex = 0;

    // convert SYLK encoded $rowData to UTF-8
    $rowData = PHPExcel_Shared_String::SYLKtoUTF8($rowData);

    // explode each row at semicolons while taking into account that literal semicolon (;)
    // is escaped like this (;;)
    $rowData = explode("\t", str_replace('¤', ';', str_replace(';', "\t", str_replace(';;', '¤', rtrim($rowData)))));
    $dataType = array_shift($rowData);
    if ($dataType == 'C') {

      //  Read cell value data
      foreach ($rowData as $rowDatum) {
        switch ($rowDatum[0]) {
          case 'C':
          case 'X':
            $columnIndex = substr($rowDatum, 1) - 1;
            break;
          case 'R':
          case 'Y':
            $rowIndex = substr($rowDatum, 1);
            break;
        }
        $worksheetInfo[0]['totalRows'] = max($worksheetInfo[0]['totalRows'], $rowIndex);
        $worksheetInfo[0]['lastColumnIndex'] = max($worksheetInfo[0]['lastColumnIndex'], $columnIndex);
      }
    }
  }
  $worksheetInfo[0]['lastColumnLetter'] = PHPExcel_Cell::stringFromColumnIndex($worksheetInfo[0]['lastColumnIndex']);
  $worksheetInfo[0]['totalColumns'] = $worksheetInfo[0]['lastColumnIndex'] + 1;

  // Close file
  fclose($fileHandle);
  return $worksheetInfo;
}