phpoffice / phpspreadsheet - Как исключить ячейки без значений из getHighestRow ()

$eanStyle = new \PHPExcel_Style();
$eanStyle->getNumberFormat()->applyFromArray([
    'code' => '0000000000000'
]);

/* apply styles */
$mainSheet->duplicateStyle($eanStyle, 'A2:A10000');

Приведенный выше код создает файл шаблона .xlsx, пользователь вводит данные (7 строк) и загружает файл, а затем:

$mainSheet->getHighestRow('A'); //  retruns 10000 instead of 8 (7 rows + header)

Заранее благодарим за помощь.


person Maytyn    schedule 18.10.2018    source источник


Ответы (1)


Я бы посоветовал вам создать фильтр чтения для читать только определенные строки и столбцы. Это предотвратит включение других пустых строк:

$inputFileType = 'Xls';
$inputFileName = './sampleData/example1.xls';
$sheetname = 'Data Sheet #3';

/**  Define a Read Filter class implementing \PhpOffice\PhpSpreadsheet\Reader\IReadFilter  */
class MyReadFilter implements \PhpOffice\PhpSpreadsheet\Reader\IReadFilter {
    public function readCell($column, $row, $worksheetName = '') {
        //  Read rows 1 to 7 and columns A to E only
        if ($row >= 1 && $row <= 7) {
            if (in_array($column,range('A','E'))) {
                return true;
            }
        }
        return false;
    }
}

/**  Create an Instance of our Read Filter  **/
$filterSubset = new MyReadFilter();

/**  Create a new Reader of the type defined in $inputFileType  **/
$reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader($inputFileType);
/**  Tell the Reader that we want to use the Read Filter  **/
$reader->setReadFilter($filterSubset);
/**  Load only the rows and columns that match our filter to Spreadsheet  **/
$spreadsheet = $reader->load($inputFileName);
person Barry    schedule 18.10.2018
comment
Спасибо за ответ, но, как я предполагаю, это что-то «статичное», 7 rows был примером. К сожалению, количество строк неизвестно. Я пробовал использовать getHighestDataRow(), и результат тот же. - person Maytyn; 18.10.2018
comment
@Maytyn, это был снимок в темноте ... есть другие фильтры чтения, которые могут помочь, но я вижу, что вы говорите ... надеюсь, у кого-то есть лучший ответ для вас - person Barry; 18.10.2018
comment
@Maytyn Будет ли это phpspreadsheet.readthedocs.io/en / stable / themes / accessing-cells / может вам помочь? - person MSI; 06.11.2018