You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在spatie/simple-excel中使用setFreezeRow及访问SheetView?

访问SheetView并设置冻结行的方法

spatie/simple-excel 基于 OpenSpout 封装,要操作 SheetView 并调用 setFreezeRow,核心是拿到底层的 OpenSpout 实例,具体步骤如下:

  • 从 SimpleExcelWriter 对象中获取底层的 OpenSpout Writer 实例,调用 getWriter() 方法即可。
  • 通过 OpenSpout Writer 获取当前工作表,使用 getCurrentSheet() 方法。
  • 从工作表中提取 SheetView 实例,调用 getSheetView() 方法。
  • 最后调用 setFreezeRow() 方法设置冻结行(参数为要冻结的行号,首行传1)。

代码示例

use Spatie\SimpleExcel\SimpleExcelWriter;

// 创建SimpleExcelWriter实例
$writer = SimpleExcelWriter::create('output.xlsx');

// 获取底层OpenSpout Writer
$openSpoutWriter = $writer->getWriter();

// 获取当前工作表
$currentSheet = $openSpoutWriter->getCurrentSheet();

// 获取SheetView实例并设置冻结首行
$sheetView = $currentSheet->getSheetView();
$sheetView->setFreezeRow(1);

// 后续正常写入数据
$writer->addRow(['姓名', '邮箱']);
$writer->addRows([
    ['张三', 'zhangsan@example.com'],
    ['李四', 'lisi@example.com'],
]);

// 关闭写入器
$writer->close();

关于你的其他问题

  1. 是否可以附加SheetView实例到SimpleExcelWriter?
    不需要额外附加,每个工作表默认已经关联了一个SheetView实例,直接修改现有实例即可满足需求。

  2. 能否从SimpleExcelWriter获取SheetView?
    可以,按照上面的步骤,通过getWriter() -> getCurrentSheet() -> getSheetView()的链式调用就能拿到目标SheetView对象。

内容的提问来源于stack exchange,提问作者user2338826

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 06:45:58