Received some other date format while read the data from xlsx file.

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Ramkumar85
    New Member
    • Jan 2012
    • 8

    Received some other date format while read the data from xlsx file.

    Hi All,

    I have received some other date value from the .xlsx file. Used the Spreadsheet::XL SX module to read the data from the file.

    Source file value : 19/07/1988 14:00:00
    The actual data : 32343.58 ( The values return from the cell while read the data from that cell).

    I also used the Spreadsheet::XL SX::Utility2007 ;Spreadsheet::X LSX::Fmt2007; module to get the correct date but not yet resolve.

    Can any one give me the idea to resolve the problem.

    Regards,
    Ram.
  • numberwhun
    Recognized Expert Moderator Specialist
    • May 2007
    • 3467

    #2
    Can you please share your code with us for how this data is being extracted from the spreadsheet?

    Regards,

    Jeff

    Comment

    • Ramkumar85
      New Member
      • Jan 2012
      • 8

      #3
      Hi Jeff,

      I below mentioned code used to get the data from xlsx file.

      Code:
      use strict;
      use warnings;
      use Spreadsheet::XLSX;
      use Spreadsheet::XLSX::Utility2007;
      use Spreadsheet::XLSX::Fmt2007;
      foreach my $sheet (@{$oExcel -> {Worksheet}}) 
      {
      	# print "Entered \n"; <STDIN>;
      	$sheetName = $sheet->{Name};
      	next unless (exists ($sheet->{MaxRow}) and (exists ($sheet->{MaxCol})));
      	foreach my $row ($sheet->{MinRow}+1 .. $sheet->{MaxRow})
      	{
                      my $DateOfDelivery;	
      if($sheet->{Cells}[$row][29])
      		{
      			$DateOfDelivery = $sheet->{Cells}[$row][29]->Value;
      			
      			print "DATE_OF_DELIVERY :: <$DateOfDelivery> \n";<STDIN>;
      			# $DateOfDelivery= Spreadsheet::XLSX::Utility2007->LocaltimeExcel($DateOfDelivery);
      			# $DateOfDelivery = Spreadsheet::XLSX::Utility2007->ExcelFmt($hFmtDefault{0x0E}, $DateOfDelivery), 
      			$DateOfDelivery = Spreadsheet::XLSX::Utility2007->ExcelFmt('yyyy-mm-dd', $DateOfDelivery);
      			print "DATE_OF_DELIVERY AFTER FORMAT :: <$DateOfDelivery> \n";<STDIN>;
      		}
      	}
      }

      Regards,
      Ram.
      Last edited by numberwhun; Jun 22 '12, 01:05 PM. Reason: Please use CODE tags around code that you post in the forums!

      Comment

      • aselder
        New Member
        • Jul 2012
        • 1

        #4
        Based on my calculation, it's the number of days since 12/30/1899

        He's a snippet of ruby code
        Code:
        require 'time'
        require 'activesupport'
        
        d = Time.parse('1899-12-30')
        d + (32343.58).days
         => 1988-07-19 13:55:12 -0700

        Comment

        Working...