2011-11-25 27 views
2

我使用Spreadsheet::WriteExcel创建excel并向其中写入一些数据。 我正在使用merge_range合并某些单元格。 但问题是我下面的代码没有合并单元格,但不显示数据($str内容)。 我无法弄清楚为什么????。Spreadsheet :: WriteExcel不使用merge_range在Excel中编写字符串

请帮我,我哪里错了?

下面是我的代码的一部分:

#!/usr/bin/perl 

use Spreadsheet::WriteExcel; 
use strict; 

my $wb = Spreadsheet::WriteExcel->new('excel_test.xls'); 
my $custom_ws = $wb->add_worksheet('Custom Parameters'); 

my $wb_format_merge = $wb->add_format(); 
$wb_format_merge->set_bold(); 
$wb_format_merge->set_text_wrap(); 
$wb_format_merge->set_border(1); 
$wb_format_merge->set_align('left'); 
$wb_format_merge->set_valign('vcenter'); 

my($row, $coll) = 0; 
my $merge_coll_len = 8; 

###### write data ### 
my $str = "Please select the follwong metrics to generate custom report in Details sheet"; 
$custom_ws->merge_range($row, $coll, $row, $coll + $merge_coll_len, $str,$merge_format); 

$row += 2; 
$custom_ws->write($row, $coll, 'select the data type for the reference'); 

回答

3
my($row, $coll) = 0; 

$coll是不确定的

使用

my($row, $coll)=(0,0);

使用4行,COLL,行,COLL为merge_range是完全有效的(只要它们具有价值;))

+0

+1:这回答了问题 – Zaid

+0

++正确的答案。 @ kailash19将“使用警告”添加到程序中会引起这种情况。 – jmcnamara

+0

非常感谢,现在正在工作。 – kailash19

2

从我可以在Spreadsheet::WriteExcel文档例子中看到,该单元格范围应该作为一个字符串参数传递,但约翰指出,单独的参数是有效的也是:

对于单个参数的形式,它应该是这样的:

$custom_ws->merge_range('A1:H1', $str, $merge_format); 

一个想法可能是推出一对夫妇的帮手子程序允许使用这种形式:

sub range { 

    my ($from_row, $from_col) = @{ $_[0] }; 
    my ($to_row, $to_col) = @{ $_[1] }; 

    die "Expecting to go from top-left to bottom-right" 
     if $from_row > $to_row || $from_col > $to_col; 

    return join '', alpha($from_row), $from_col, ':', alpha($to_row), $to_col; 
} 

sub alpha { 
    my $row = 'A'; 
    $row++ for 1 .. +shift; 
    return $row; 
} 

然后调用range

$custom_ws->merge_range(range([ $row, $col ], 
           [ $row, $col + $length ]), 
         $str, 
         $merge_format); 
+0

的merge_range()方法适用于任一$行,$山口风格参数或A1样式范围串。另外,还有一些函数可以在Spreadsheet :: WriteExcel :: Utility模块中的每种类型之间进行转换。 – jmcnamara

+1

@jmcnamara:为我提供正确的解决方案 – Zaid

相关问题