Подтвердить что ты не робот

Только для чтения

Я пытаюсь прочитать только один лист из документа xls, и у меня есть это:

 $objPHPExcel = $objReader->load('daily/' . $fisierInbound);
 $objWorksheet = $objPHPExcel->setActiveSheetIndex(0);
 foreach ($objPHPExcel->getWorksheetIterator() as $worksheet) {

            $worksheetTitle     = $worksheet->getTitle();
            $highestRow         = $worksheet->getHighestRow(); // e.g. 10
            $highestColumn      = $worksheet->getHighestColumn(); // e.g 'F'
            $highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);
            $dataCalls = $worksheet->getCellByColumnAndRow(2, 2)->getValue();
            $dataSubstr = substr($dataCalls, 53);


        } 

Проблема в том, что он читает все листы файла.

Любые идеи?

4b9b3361

Ответ 1

Как описано в документе PHPExcel User Documentation - Reading Spreadsheet Files в папке /Documentation (раздел 5.2, озаглавленный "Чтение только именованных рабочих листов из файла" ):

Если вам известно имя листа, который вы хотите прочитать.

$inputFileType = 'Excel5'; 
$inputFileName = './sampleData/example1.xls'; 
$sheetname = 'Data Sheet #2'; 

/**  Create a new Reader of the type defined in $inputFileType  **/ 
$objReader = PHPExcel_IOFactory::createReader($inputFileType); 
/**  Advise the Reader of which WorkSheets we want to load  **/ 
$objReader->setLoadSheetsOnly($sheetname); 
/**  Load $inputFileName to a PHPExcel Object  **/ 
$objPHPExcel = $objReader->load($inputFileName); 

Если вы не знаете имя рабочего листа заранее, вы можете получить список всех листов перед загрузкой файла

$inputFileType = 'Excel5'; 
$inputFileName = './sampleData/example1.xls'; 

/**  Create a new Reader of the type defined in $inputFileType  **/ 
$objReader = PHPExcel_IOFactory::createReader($inputFileType); 
/**  Read the list of worksheet names and select the one that we want to load  **/
$worksheetList = $objReader->listWorksheetNames($inputFileName)
$sheetname = $worksheetList[0]; 

/**  Advise the Reader of which WorkSheets we want to load  **/ 
$objReader->setLoadSheetsOnly($sheetname); 
/**  Load $inputFileName to a PHPExcel Object  **/ 
$objPHPExcel = $objReader->load($inputFileName); 

Ответ 2

Вы можете сделать это проще, чем получить список имен рабочих листов:

$objPHPExcel->setActiveSheetIndex(2);
$worksheet = $objPHPExcel->getActiveSheet();

Загружает # 2 (третий) рабочий лист.

Ответ 3

Самый простой способ для тех, кто все еще борется с этим -

//include library
include('path/to/PHPExcel/IOFactory.php');

//load the file
$objPHPExcel = PHPExcel_IOFactory::load('your/path/for/excel/file');

//get the worksheet of your choice by its name
$worksheet = $objPHPExcel->getSheetByName('Name of sheet');

#and your work goes here...

Ответ 4

//load library - EXCEL
$this->load->library('excel');
$objPHPExcel = PHPExcel_IOFactory::load('./folder/exceldata.xls');

К отдельным рабочим листам можно получить доступ по имени или по их индексу в рабочей книге. Позиция индекса представляет порядок, в котором каждая "вкладка" рабочей таблицы отображается при открытии рабочей книги в MS Excel (или другой соответствующей программе электронных таблиц).

Чтобы получить доступ к листу по имени, используйте метод getSheetByName(), указав имя рабочего листа, к которому вы хотите получить доступ.

//Retrieve the worksheet called 'Worksheet 1'
$objPHPExcel->getSheetByName('Worksheet 1');

Чтобы получить доступ к листу по его индексу, используйте метод getSheet(). Обратите внимание, что листы индексируются с 0.

//Retrieve the **1st 'tab' worksheet** e.g. called 'Sheet 1'
$worksheet = $objPHPExcel->getSheet(0);
//Retrieve the **2nd 'tab' worksheet** e.g. called 'Sheet 2'
$worksheet = $objPHPExcel->getSheet(1);

Это все может быть достигнуто с помощью @Mark Baker PHPExcel Library. Благодарю.