web-dev-qa-db-ja.com

特定のシートのみを読み取る

私はxlsドキュメントから1枚だけを読み取ろうとしていますが、私はこれを持っています:

 $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);


        } 

問題は、ファイルのすべてのシートを読み取ることです。

何か案は?

17
ardb

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); 
21
Mark Baker

ワークシート名のリストを取得するよりも簡単にできます。

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

#2(3番目)のワークシートをロードします。

12
Mycelin

まだこれに苦労している人のための最も簡単な方法-

//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...
9
//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 Ba​​kerのPHPExcel Libraryを使用して実現できます。ありがとう。

1
Viren