2014-04-15 16 views
13

Tôi cố gắng để đọc chỉ là một tờ từ một tài liệu xls và tôi có điều này:chỉ đọc tờ cụ thể

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


     } 

Vấn đề là nó đọc tất cả các tờ của tập tin.

Bất kỳ ý tưởng nào?

+2

Bạn có một iteraration 'cho bảng each'. Đó là một số loại hiển nhiên rằng anh ấy sẽ đọc tất cả chúng! Bạn cần gọi phương thức 'getActiveSheet()' từ lớp PHPExcel. –

+0

Tôi đã tìm ra được. Cảm ơn ! – ardb

+0

'getHighestRow()' nên được thay thế bằng 'getHighestDataRow()'; tương tự cho chức năng Cột ... – Raptor

Trả lời

19

Như đã trình bày trong tài liệu PHPExcel User Documentation - Reading Spreadsheet Files trong /Documentation thư mục (phần 5.2 mang tên "Đọc bảng Chỉ được đặt tên từ một File".):

Nếu bạn biết tên của bảng mà bạn muốn đọc.

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

Nếu bạn không biết tên của bảng trước, bạn có thể có được một danh sách tất cả các bảng tính trước khi tải các tập tin

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

cảm ơn bạn @Mark. – black

9

Bạn có thể làm điều đó dễ dàng hơn nhận được danh sách các bảng tên:

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

Tải trang 2 (thứ ba).

+0

Nhưng nếu người dùng thay đổi chỉ mục trang tính thì sao? –

4

Một cách đơn giản nhất cho những ai vẫn đang vật lộn với điều này -

//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... 
Các vấn đề liên quan