如何在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();
关于你的其他问题
是否可以附加SheetView实例到SimpleExcelWriter?
不需要额外附加,每个工作表默认已经关联了一个SheetView实例,直接修改现有实例即可满足需求。能否从SimpleExcelWriter获取SheetView?
可以,按照上面的步骤,通过getWriter()->getCurrentSheet()->getSheetView()的链式调用就能拿到目标SheetView对象。
内容的提问来源于stack exchange,提问作者user2338826
相关产品推荐
相关产品推荐

