【问题标题】:phpexcel select cell after freezePane()phpexcel在freezePane()之后选择单元格
【发布时间】:2016-02-25 22:25:17
【问题描述】:

A) 我想要打开一个 PHPExcel 生成的文件并选择单元格 A1。没问题:我可以做到。

B) 我想要一个 PHPExcel 生成的带有冻结窗格的文件(在“E6”,但这不是真正的问题)。同样,这不是问题:我可以做到。

现在,当我尝试执行 A B 时,我遇到了一个真正的问题:无论我尝试什么,文件总是在选择单元格 E6 的情况下打开...

我尝试过使用 $objPHPExcel->getActiveSheet()->freezePane('E6'); 在文件构建的不同阶段(开始,结束,中间),总是 $objPHPExcel->getActiveSheet()->setSelectedCell('A1'); 之后冻结了窗格,但没有运气......

我搜索并搜索并没有找到解决方案(除了 SO 的一个可能相关但未答复的请求)。要么我忽略了一些明显简单的事情,要么我发现了一个小错误...... :-) 有人可以帮忙吗?

非常感谢期待。

【问题讨论】:

  • 无法复制!我冻结了窗格,然后我 setSelectedCell('A1') 没有问题.....你写的是什么格式?
  • xlsx...我很困惑。我同意这应该是一件简单的事情,但我一次又一次地遇到同样的问题。这是一个中等复杂的页面,我想知道是否有其他问题在干扰。明天我将编写示例(和简单)文件并在这里​​报告。感谢您的反馈!
  • @mark-baker 我正要“在这里报告”,经过不同的尝试并总是想出相同的可重现场景(所选单元格 never 转到 A1 )。然后我看到了您的回复,现在将看到修复程序是如何工作的。再次感谢您的反馈。

标签: phpexcel


【解决方案1】:

查看代码,当有拆分窗格时,Excel2007 Writer 会覆盖所选单元格,将其更改为拆分的左上角单元格。

Classes/PHPExcel/Writer/Excel2007/Worksheet.php 中进行快速而肮脏的修复,将第 262 行更改为

$activeCell = $topLeftCell;

$activeCell = empty($activeCell) ? $topLeftCell : $activeCell;

我还没有完全测试它,但它现在应该可以工作了......我真的应该测试一下,看看所选单元格属于哪个“窗格”,并在该窗格中进行适当的设置

【讨论】:

  • “快速而肮脏的修复”似乎在测试文件中运行良好。根据我正在做的事情,我希望它是一个合适的解决方案。感谢您提供有用的反馈。从现在开始我将使用“补丁”,如果我不在这里报告,这意味着一切都很好......再次感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多