phpoffice/phpspreadsheet - 如何从 getHighestRow() 中排除无值单元格

Posted

技术标签:

【中文标题】phpoffice/phpspreadsheet - 如何从 getHighestRow() 中排除无值单元格【英文标题】:phpoffice/phpspreadsheet - How to exclude no value cells from getHighestRow() 【发布时间】:2019-03-23 03:23:39 【问题描述】:
$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)

提前感谢您的帮助。

【问题讨论】:

【参考方案1】:

我建议您为read only specific rows and columns 创建一个读取过滤器。这将防止包含其他空行:

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

【讨论】:

感谢您的回答,但我认为这是一种“静态”,7 rows 就是一个例子。不幸的是,行数未知。我试过使用getHighestDataRow(),结果是一样的。 @Maytyn 这是在黑暗中拍摄...还有其他阅读过滤器可能会有所帮助,但我可以看到您在说什么...希望其他人可以为您提供更好的答案跨度> @Maytyn 这个phpspreadsheet.readthedocs.io/en/stable/topics/accessing-cells/…能帮到你吗?

以上是关于phpoffice/phpspreadsheet - 如何从 getHighestRow() 中排除无值单元格的主要内容,如果未能解决你的问题,请参考以下文章

phpoffice/phpspreadsheet对Excel导入导出操作

作曲家需要 phpoffice/phpspreadsheet 不起作用

PhpOffice\PhpSpreadsheet 从 excel 错误字符集中导入 mysql

phpoffice/phpspreadsheet - 如何从 getHighestRow() 中排除无值单元格

phpoffice/phpspreadsheet读取Excel内的图片

#yyds干货盘点#Hyperf结合PhpOffice/PhpSpreadsheet实现Excel&CSV文件导出导入