代码之家  ›  专栏  ›  技术社区  ›  James Finnegan

Excel::Writer::XLSX写入未格式化日期

  •  2
  • James Finnegan  · 技术社区  · 7 年前

    我有一个脚本正在使用 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');
    

    我怎样才能在阅读电子表格和查看数据时保持一致 年月日

    1 回复  |  直到 7 年前
        1
  •  0
  •   Community Mohan Dere    6 年前

    引用自 CELL FORMATTING

    单元格格式是通过格式对象定义的。格式对象是通过调用工作簿创建的 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