我有一个脚本,该脚本正在使用Spreadsheet::XLSX
模块读取包含未格式化日期的数据。当我在桌面上打开电子表格时,它确实以mm/dd/yyyy
格式显示日期。阅读完它们后,我使用Excel::Writer::XLSX
模块将它们写到电子表格中。我基本上是按顺序添加下一个日期。一切正常,直到我从创建的电子表格中读取。它只会读取格式化的日期,无论我是否使用以下任何一种来读取它们:
$cell->{Val}
$cell->value()
这是我用来写出日期的写格式。我很清楚,我正在使用这种格式以未格式化的值写出日期。如果我不使用num_format
,那么当我打开电子表格时,日期的格式为ddddd
。
$workbook->add_format(bold => 1, align => 'center', num_format => 'mm/dd/yyyy');
在阅读电子表格时如何保持一致,并且在打开日期时还以mm/dd/yyyy
的形式查看日期?
答案 0 :(得分:0)
引用CELL FORMATTING部分:
单元格格式是通过Format对象定义的。通过调用工作簿
add_format()
方法来创建格式对象,如下所示:my $format2 = $workbook->add_format( %props ); # Set at creation
format对象包含可以应用于单元格,行或列的所有格式设置属性。 设置这些属性的过程将在下一部分中讨论。
write_date_time()部分的另一条引言:
日期应始终带有
$format
,否则它将显示为数字,请参见“日期和时间过高”和“单元格格式”。
因此,您的代码应为:
my $date_format = $workbook->add_format(
bold => 1,
align => 'center',
num_format => 'mm/dd/yyyy'
);
# apply format to a specific cell
# $string should be in ISO-8601 format as UTC, e.g. yyyy-mm-ddThh:mm:ss.sssZ
$worksheet->write_date_time($row, $column, $string, $date_format);
我为争吵的时间戳选择的武器将是Date::Manip发行版。