【问题标题】:Excel::Writer::XLSX (Perl) sheet introspecionExcel::Writer::XLSX (Perl) 工作表内省
【发布时间】:2020-02-24 23:28:53
【问题描述】:

一段时间以来,我一直想知道这个模块是否/何时可以获得一些自省能力,而不仅仅是破解对象。

例如:

一旦写好工作表,我怎么知道查询工作表对象以了解它有多少行和列?

我想做的是写几张纸,然后回到每一张纸上,给它们写更多的行。我可以自己跟踪最后一行/列,但在此之前,我想知道是否可以在最终工作簿->关闭之前从已写入的对象中获取该数据。

我想我可以计算工作表对象的 _table 散列中的键数,但这可能太接近金属而不能成为“官方”。我记得约翰在 CPAN 文档的某个地方说过不要这样做。

【问题讨论】:

  • 欢迎 :) 您能否添加一些您已经尝试丰富和澄清您的问题的代码?
  • 作者非常善于交际,也经常在这里回答问题。如果你有这样的具体问题,你实际上可以给他发电子邮件。根据我的经验,他对话语持开放态度。
  • 我的代码很简单:创建并编写一张工作表。然后,通过询问工作表它有多少行(而不是手动跟踪行),向工作表添加更多行。 Ii 可以用 die 'Last row is: ' 来完成。 ( 1 + ( 排序{ $a $b } 键 %{ $sheet->{ _table } } )[ -1 ] )。 "\n";但这越来越亲密了。上次给 John 的消息我很幸运,但我想我会先在这里问。

标签: perl worksheet introspection excel-writer-xlsx


【解决方案1】:

我可以自己跟踪最后一行/列,但在我这样做之前,我想知道是否可以在最终工作簿之前从已经写入的对象中获取该数据->关闭。

没有。那是不可能的。 Excel::Writer::XLSX 不提供任何工具用于在数据通过 API 后对其进行内省。这是一个深思熟虑的设计决定。您应该将 Excel::Writer::XLSX 对象视为黑盒,而不是某种数据库。

做你想做的最好的方法是在你的程序中跟踪范围数据。

【讨论】:

  • 对黑匣子说得还不错,但是为什么不至少有几个“官方”方法来获取这种数据,因为它是如此微不足道呢?
  • 对 API 的任何补充都是微不足道的。这一切都需要代码、测试、文档和一些远见。这需要时间和精力,而这些时间和精力可能会花在用户无法在自己的应用程序中实现的功能上。
  • 好的。时机成熟时,我很乐意自愿参与我为制作我需要制作的电子表格而开发的东西。
猜你喜欢
  • 1970-01-01
  • 2022-11-13
  • 1970-01-01
  • 2012-07-31
  • 1970-01-01
  • 1970-01-01
  • 2013-12-16
  • 2011-09-16
  • 2020-12-06
相关资源
最近更新 更多