Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
perl Excel::Writer::XLSX生成偏移1行的大纲_Perl_Excel Writer Xlsx - Fatal编程技术网

perl Excel::Writer::XLSX生成偏移1行的大纲

perl Excel::Writer::XLSX生成偏移1行的大纲,perl,excel-writer-xlsx,Perl,Excel Writer Xlsx,我正在尝试使用perl模块Excel::Writer::XLSX构建一个带有轮廓行的电子表格。我需要行轮廓符号显示在轮廓级别栏上方。当我运行下面的脚本时,会正确生成轮廓符号和水平线,但会向下移动一行 use strict; use Excel::Writer::XLSX; my $visible = 1; my $symbols_below = 0; my $symbols_right = 0; my $auto_style = 0; my $output_rpt = 'report.xls

我正在尝试使用perl模块Excel::Writer::XLSX构建一个带有轮廓行的电子表格。我需要行轮廓符号显示在轮廓级别栏上方。当我运行下面的脚本时,会正确生成轮廓符号和水平线,但会向下移动一行

use strict;
use Excel::Writer::XLSX;

my $visible = 1;
my $symbols_below = 0;
my $symbols_right = 0;
my $auto_style = 0;

my $output_rpt = 'report.xlsx';
my $color1 = "#CBBEA0";
my $color2 = "#DDD7C5";

my $workbook   = Excel::Writer::XLSX->new( $output_rpt );
my $worksheet1 = $workbook->add_worksheet( 'report' );
$worksheet1->outline_settings($visible, $symbols_below, $symbols_right, $auto_style);

my $format1  = $workbook->add_format( bold => 1, bg_color => $color1, align => 'center' );
my $format2  = $workbook->add_format( bold => 1, bg_color => $color1, align => 'left'  );
my $format3  = $workbook->add_format( bold => 1, bg_color => $color2, align =>'left'  );
my $format4  = $workbook->add_format( align => 'center'  );

my @last = qw( Smith Jones Panglossian );
my @first = qw( Algonquin Mephibosheth Noah );
my @age = (24, 42, 962);
my @hidden    = (0, 0, 0);
my @level     = (0, 1, 1);
my @collapsed = (1, 0, 0);

for my $idx (0..2) {
    my $row = $idx+1;
    $worksheet1->set_row( $row, undef, undef, $hidden[$idx], $level[$idx], 
$collapsed[$idx] );
$worksheet1->write( 'A' . $row, $first[$idx], $format2);
$worksheet1->write( 'B' . $row, $last[$idx], $format3);
$worksheet1->write( 'C' . $row, $age[$idx], $format4);
}
$workbook->close();
输出电子表格如下图所示。请注意,轮廓栏偏移了1行

如果查看该方法的文档,您将看到:

$worksheet->set_row( 0, 20 );    # Row 1 height set to 20
这意味着索引是基于0的,但您给它$idx+1。将该行更改为以下内容,它应该可以像我在我的终端进行测试时预期的那样工作:

$worksheet1->set_row( $idx, undef, undef, $hidden[$idx], $level[$idx], $collapsed[$idx] );
#                      ^^^

稍后文档中确实出现了一个错误,其中一个示例显示了一个基于1的索引

在代码中:折叠符号放置在第1行,轮廓栏设置为跨第2行和第3行。在生成的电子表格中:折叠符号位于第2行,在我放置它的位置下一行,第1行。轮廓栏横跨第3行和第4行。在跨度2和3下方还有一行。大纲栏所跨越的行在代码行中从未提及过。我的问题是:我缺少什么使大纲跨越我希望它跨越的行?这就是问题所在。谢谢