加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

perl – 如何使用Excel :: Writer :: XLSX设置工作簿范围的默认

发布时间:2020-12-15 21:44:31 所属栏目:大数据 来源:网络整理
导读:是否可以使用 Excel::Writer::XLSX更改或声明默认字体? 我每次创建或添加图表和单元格时都可以设置它.但我认为应该有一个更简单的方法. 解决方法 也许. 免责声明:Excel :: Writer :: XLSX的作者解释说这不是一个好主意,不能保证工作here和here. 创建Format
是否可以使用 Excel::Writer::XLSX更改或声明默认字体?
我每次创建或添加图表和单元格时都可以设置它.但我认为应该有一个更简单的方法.

解决方法

也许.

免责声明:Excel :: Writer :: XLSX的作者解释说这不是一个好主意,不能保证工作here和here.

创建Format对象时,可以将属性xf_index设置为0.这会将Format设置为默认值.

use Excel::Writer::XLSX;

my $workbook  = Excel::Writer::XLSX->new( 'filename.xlsx' );

# set the default format
$workbook->add_format(xf_index => 0,font => 'Comic Sans MS' ); # I'm on Linux

my $worksheet = $workbook->add_worksheet();
$worksheet->write( 0,'Hi Excel!' );      # will be in Comic Sans

my $format = $workbook->add_format(font => 'Arial' );
$worksheet->write( 1,1,'In Arial!',$format );

这在文档中没有描述,但reading the code解释了它.

即使您稍后添加更多格式,它也能正常工作.您不需要保留该初始调用的Format对象.它将在整个工作簿中使用(可能也在不同的工作表上,但我没有测试).

我建议你在代码注释中解释你正在做什么,因为它真的不是很明显.

经过一些额外的研究后,我发现它在the PDF document OpenOffice.org’s Documentation of the Microsoft Excel File Format,第89页底部的第4.6.2章(强调我的)中进行了解释.

The default cell format
is always present in an Excel file,described by the XF record with the fixed index 15 (0-based). By default,it uses the
worksheet/workbook default cell style,described by the very first XF record (index 0).

所以现在我们也知道为什么它是xf_index => 0.

一般建议的老答案:

一般来说,不支持.您需要使用格式. The docs say,Calibri的大小为11的默认格式.

The default format is Calibri 11 with all other properties off.

您需要为格式,字体系列,字体大小等特定组合创建格式对象,然后您可以在每个单元格或图表中的整个文档中重复使用该格式对象.如果某个特定单元格中的某个选项不同,则需要为其创建一个额外的Format对象.

my $default_format = $workbook->add_format( font => 'Comic Sans' );

# ...

$worksheet->write( 'A1','Cell A1',$default_format );

# later ...

$worksheet->write( 'Z3','Cell Z3',$default_format );

如果您需要大量不同的格式,但总是希望使用相同的字体,那么将字体字符串设置为格式哈希并使用它可能会很有用.

my %default_formatting = ( font => 'Comic Sans' );
my $bold_format = $workbook->add_format( %default_formatting,bold => 1 );

甚至可以创建一个有助于创建Format对象的子,并且已经知道默认字体.

sub create_format {
    my ($workbook,%formats) = @_;
    return $workbook->add_format( font => 'Comic Sans',%formats );
}

# somewhere
my $bold_format = create_format( $workbook,bold => 1 );
$worksheet->write( 'A1',$bold_format );

这也将允许像这样的丢弃格式:

$worksheet->write( 'D1','Weird stuff',create_format( 
    $workbook,bold      => 1,strikeout => 1,shadow    => 1,bg_color  => 'pink',));

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读