【问题标题】:Getting data from a variable number of columns in Excel using Perl with OLE使用 Perl 和 OLE 从 Excel 中可变数量的列中获取数据
【发布时间】:2010-10-05 14:55:14
【问题描述】:

我正在使用 OLE 和 Perl 在 Excel 中构建一些图表。数据位于四个不同的工作表中,具体取决于它用于四个测试中的哪一个。问题是当我不知道它会持续多久时,我不知道如何设置图表来查看所有数据。

我知道使用;

$last_col = $sheet -> UsedRange -> Find({What => "*", SearchDirection => xlPrevious, SearchOrder => xlByColumns}) -> {Column};

获取包含数据的最后一列。但我不能去

my $Range = $Sheet->Range("a1:$last_col3");

设置范围(显然)

任何想法如何设置范围以包含到最后一列?还是最好将每一列单独添加到图表中?

谢谢!

【问题讨论】:

  • "$last_col3"没有被解析为$last_col . "3"的问题吗?然后使用"a1:${last_col}3""a1:$last_col" . "3" (注意引号:双引号中的表达式被插值,单引号中的表达式更按字面意思处理)。

标签: perl excel ole date-range


【解决方案1】:

你没有理由不能使用

$sheet->range( "A1:${last_col}3" )

它对我有用。

【讨论】:

  • 使用它会产生警告(关于类型不匹配和 METHOD/PROPERTY GET),然后我制作的所有四个图表都是相同的。
  • @Andy:我没有看到这个问题(使用 Perl 5.12.1、Win32::OLE 0.1709 和 Excel 2007)。而且我什至不能用单引号得到那个错误。
【解决方案2】:

好的,我找到了方法。不确定这有多好,但它确实有效。

不要将变量放入范围值,而是命名最后一个有趣的单元格:

$sheet -> Cells ($last_row,$last_col) -> {Name} = "LastCell";

然后在范围字段中使用这个;

my $Range = $Sheet->Range("a1:LastCell");

不是我每次执行的最优雅的编码,但它确实有效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-06
    • 1970-01-01
    • 2016-07-10
    • 2012-04-17
    相关资源
    最近更新 更多