2015-11-02 157 views
1

使用PHPExcel,我有一個getHighestRow()函數的問題。如果電子表格被格式化爲最後一個數據條目之外,最高行不會反映數據輸入,但包括格式化在內的單元格修改。'getHighestRow'沒有考慮到格式化

如何獲得有用的行數,意味着只有那些非空數據的行數?

到目前爲止,我使用下面的代碼作爲替補,但我不是很滿意加載整個第一列:

$file = $fileForm->get('file')->getData(); 
    $path = $file->getRealPath(); 
    $phpExcel = $this->get('phpexcel')->createPHPExcelObject($path); 
    $worksheet = $phpExcel->getSheet(); 
    $firstColumn = $worksheet->rangeToArray("A1:A" . $worksheet->getHighestRow(), null, false, false); 
    $firstColumn = array_map(function(Array $lines) { 
     return array_values($lines)[0]; 
    }, $firstColumn); 
    $highestRow = count(array_filter($firstColumn)); 
    unset($firstColumn); 

回答

0

這就是爲什麼還有一個

$worksheet->getHighestDataRow() 

方法

+0

嗯,我會喜歡它的工作,但事實並非如此。如果我有一個工作表包含超出最後一行包含數據的格式化,它仍然超出最後一行包含數據:-( –

+0

我非常懷疑......它可能會通過最後一行包含___visible___數據,但一個Excel單元格可能包含一個空字符串或空字符串 –

+0

我剛剛通過$ highestRow = $ worksheet-> getHighestDataRow()更改了我的代碼,並且我的值爲1000,而我的文件是284。從285行到999行,沒有數據,只有一條格式 –