PHPSpreadsheet-Excel工作表中具有“表格式”的多个表

时间:2018-06-19 17:57:28

标签: php excel phpspreadsheet

我尝试在一个工​​作表中包含多个格式化的表。该模板如下例所示:Template

表使用表格式模板设置样式。

如果我运行代码:     

use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
use PhpOffice\PhpSpreadsheet\IOFactory;

$inputFileName = 'template/Age.xlsx';
$inputFileType = 'Xlsx';
if (!file_exists($inputFileName)) {
    echo('File ' . $inputFileNameShort . ' does not exist');
}
$reader = IOFactory::createReader($inputFileType);
$spreadsheet = $reader->load($inputFileName);

$writer = new Xlsx($spreadsheet);
$writer->save(Age.xlsx);
$spreadsheet->disconnectWorksheets();
unset($spreadsheet);

该格式未覆盖到新的Age.xlsx文件中。

如果我尝试手动设置表格样式,则会遇到AutoFilter问题。似乎只能设置一个过滤器范围。我尝试了以下代码:

$ageSheet =$spreadsheet->getSheet(0);
$ageSheet->setAutoFilter('A3:B10');
$ageSheet->setAutoFilter('D3:E9');
$ageSheet->setAutoFilter('A17:B24');
$ageSheet->setAutoFilter('D17:E23');

仅设置最后一个范围。

我的问题是:

  1. 使用PHPSpreadsheet是否可以在一个工作表中包含一个以上的表?
  2. 如何实现上面显示的这种输出?

版本

  • Excel MS Excel 2013
  • PHPSpreadsheet [1.2.1]-2018-04-10

1 个答案:

答案 0 :(得分:0)

在MS excel中,只能设置一个真实的过滤器。要在工作表上放置多个内容,您必须使用格式模板。格式模板使用数据透视表来实现多重过滤器行为。

PHPspreadsheet使用表过滤,每次使用setAutoFilter方法覆盖该过滤。这意味着每个工作表只能有一个。

目前,PHPspreadsheet中不支持数据透视表。

目前,在一个工作表中不能再包含一个已过滤的表。