gpt4 book ai didi

perl - Excel::Writer::XLSX 单元格(带有日期和时间)需要刷新

转载 作者:行者123 更新时间:2023-12-03 02:57:05 28 4
gpt4 key购买 nike

我可以使用 Excel::Writer::XLSX 包从 DBI 查询的结果成功创建 xlsx。

唯一的麻烦是日期和时间单元格,在 Excel 2010 中打开时需要刷新,即 F2 <enter>才能正确显示。

显示示例:2012-12-02 17:48:33.000当电子表格打开时

刷新后:02/12/2012 17:49 F2 <enter> 之后的所需格式

对于可能导致此问题的原因以及此问题是否可以在我的 Perl 脚本中解决的任何提示/指导,我将不胜感激?

非常感谢...

PS 自动计算已启用,Win 7 上的 StrawberryPerl 5.16

更新:为了完整起见,并且可能对其他人有帮助:我使用以下构造从查询中写入记录,该记录可以是纯字符串或日期时间。

如果一个 muff 是捕获日期的正则表达式,或者 sprintf将其放入 write_excel_date 所需的正确格式字符串中方法,将纯字符串写入单元格。这就是我的问题。

if ( $item =~ qr[(\d{4})-(\d{2})-(\d{2})\s(\d{2}):(\d{2}):(\d{2})\.000] ) {
my $date = sprintf "%4d-%02d-%02dT%02d:%02d:%02d", $1, $2, $3, $4, $5, $6;
$worksheet->write_date_time( $row, $col++, $date, $date_format);
}
else {
$worksheet->write( $row, $col++, $item );
}

最佳答案

如果您使用工作表 write_date_time() 方法写入日期,则不必在 Excel 中刷新它们,因为它们只是格式化的数字,不需要重新计算。

但是,如果您将日期写为字符串,那么您需要在 Excel 中执行某些操作将它们转换为日期。但您不需要这样做,因为 Excel::Writer::XLSX 提供了一种用于写入日期的专用方法:

#!/usr/bin/perl

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

my $workbook = Excel::Writer::XLSX->new( 'date_example.xlsx' );
my $worksheet = $workbook->add_worksheet();
my $date_format = $workbook->add_format( num_format => 'dd/mm/yyyy hh:mm' );

# Increase the column width to make the output clearer.
$worksheet->set_column( 'A:A', 20 );

# Write the date.
$worksheet->write_date_time( 'A1', '2012-12-02T17:48:33.000', $date_format );

__END__

enter image description here

请参阅Dates and Times Excel::Writer::XLSX 文档的部分详细说明了如何处理日期。

关于perl - Excel::Writer::XLSX 单元格(带有日期和时间)需要刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13690165/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com