Php 只读特定工作表
我试图只阅读xls文档中的一页,我有以下内容:Php 只读特定工作表,php,phpexcel,xls,Php,Phpexcel,Xls,我试图只阅读xls文档中的一页,我有以下内容: $objPHPExcel = $objReader->load('daily/' . $fisierInbound); $objWorksheet = $objPHPExcel->setActiveSheetIndex(0); foreach ($objPHPExcel->getWorksheetIterator() as $worksheet) { $worksheetTitle = $w
$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);
}
问题是它读取文件的所有页
有什么想法吗?如/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);
您可以比获取工作表名称列表更容易:
$objPHPExcel->setActiveSheetIndex(2);
$worksheet = $objPHPExcel->getActiveSheet();
加载#2(第三个)工作表。对于仍在挣扎的人来说,这是一个最简单的方法-
//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...
可以通过名称或其在工作簿中的索引位置访问各个工作表。索引位置表示在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库来实现。谢谢。您为每张工作表都准备了一份。很明显,他会读所有的书!您需要从PHPExcel的类中调用
getActiveSheet()
方法。我已经找到了答案。谢谢getHighestRow()
应替换为getHighestDataRow()
;列函数也是如此……但如果用户更改了工作表索引怎么办?
//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);