1

I am using phpexcel library to read an excel file.It works perfeclty on 99%. But sometimes it reads empty columns also.My code is

try {
    $inputFileType = PHPExcel_IOFactory::identify($inputFileName);
    $objReader = PHPExcel_IOFactory::createReader($inputFileType);
    $objPHPExcel = $objReader->load($inputFileName);
} catch(Exception $e) {
    die('Error loading file');
}   

$worksheet=$objPHPExcel->getActiveSheet();) {
$worksheetTitle     = $worksheet->getTitle();
$highestRow         = $worksheet->getHighestRow();
$highestColumn      = $worksheet->getHighestColumn();
$highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);
$nrColumns = ord($highestColumn) - 64;

sometimes the $highestcolumn returns 'WVL' even if the data in excel column up to 'C' why?. Also i want to check all the rows under a particular column is empty or not,Is there any easy method to do it instead of iterating all rows using for loop.

2
  • hi do you wont get highest column of sheet or highest column with data ? Commented Nov 6, 2014 at 11:02
  • i want highest column with data Commented Nov 6, 2014 at 11:08

1 Answer 1

7

The getHighestRow() and getHighestColumn() methods work on the basis of testing for anything related to a cell, even if that's a style setting or a named range or print settings or a column/row setting such as width/height or hidden.

That's why the getHighestDataRow() and getHighestDataColumn() methods exist. These two methods look at the actual data in cells.

Note: Just because a cell looks empty when you view it in MS Excel, doesn't mean that it actually is empty. NULL is a valid cell value, as is a space character, neither of which is visible.


In answer to your second question: you can pass an optional argument to the getHighestRow(), getHighestColumn() and to the getHighestDataRow() and getHighestDataColumn(), so a row number passed to getHighestColumn() or getHighestDataColumn() will return the highest column in the specified row; and a column letter passed to getHighestRow() or getHighestDataRow() will return the highest row in that column.

e.g.

$highestColumnInRow5 = $worksheet->getHighestColumn(5);

or

$highestDataRowInColumnAA = $worksheet->getHighestDataRow('AA');
Sign up to request clarification or add additional context in comments.

2 Comments

is there any way to take all the rows under a particular column into an array ?
Using the worksheets rangeToArray() method, you can specify a range, e.g. $column = 'C'; $data = $worksheet->rangeToArray($column.'1:'.$column.$worksheet->getHighestDataRow($column));

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.