【问题标题】:PHPSpreadsheet - Multiple tables with "format as table" in excel worksheetPHPSpreadsheet - excel工作表中具有“格式为表格”的多个表格
【发布时间】:2018-11-28 18:30:53
【问题描述】:

我尝试在一个工​​作表中包含多个格式化表格。该模板类似于以下示例: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 文件所取代。

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

$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

【问题讨论】:

    标签: php excel phpspreadsheet


    【解决方案1】:

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

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

    目前 PHP 电子表格中不支持数据透视表。

    目前不可能在一个工作表中包含多个过滤表。

    【讨论】:

    • 关于为什么没有接管编队的任何信息? “格式为表格”样式是否不同于应用于单元格的常规样式?
    • 函数“格式化为表格”生成数据透视表。这是与普通样式的最大区别。
    猜你喜欢
    • 2015-06-24
    • 1970-01-01
    • 1970-01-01
    • 2019-06-25
    • 2018-04-03
    • 1970-01-01
    • 1970-01-01
    • 2015-07-22
    • 2013-03-10
    相关资源
    最近更新 更多