http://qs321.pair.com?node_id=461884


in reply to Spreadsheet::ParseExcel incompatible with Openoffice?

I wonder, if I may, ask some more about your problem. I have a (small) interest in ParseExcel, as well as WriteExcel, as I recently wrote a script to deliver hundreds of Excel spreadsheets using the WriteExcel module.

You were saying that your customer generates an Excel 4.0 document, and that ParseExcel can't handle it - do you mean that ParseExcel just aborts on the file, or does it returns the kind of problems you were experiencing with OpenOffice calc?

Also, according to the CPAN documentation for ParseExcel, each cell object has a number of fields. They include: Value, Val, Type, Code, Format, Merged, and Rich. Which field were you viewing? Is is possible that if you were dumping:

$oWkC = $oWkS->{Cells}[$iR][$iC]; print $oWkC->{Value};
that maybe the value you're looking for could be in:
print $oWkC->{Val};
?

Perhaps a contribution of:

use Data::Dumper; print Dumper( $oWkC );
might aid in your question here?

Replies are listed 'Best First'.
Re^2: Spreadsheet::ParseExcel incompatible with Openoffice?
by pepik_knize (Scribe) on May 31, 2005 at 02:43 UTC

    ParseExcel cannot open the original document (Excel 4.0). The specific error is "Couldn't open your file::Bad file descriptor."

    As it turns out, I forgot that I was using ParseExcel::Simple. That wasn't really a problem, though, as when I switch back to ParseExcel, I see the same behavior.

    Now, that was a great suggestion to look at the object using Data::Dumper. I did the following:

    I dumped the objects as they were saved by OO, then did the same after saving (but not changing) the file with Excel. Two fields differed: _Value, and FmtIdx. It seems that the _Value field gets set to "GENERAL" for numeric fields by OO, and the value is in the Val field. Excel has the value in both places. In other words, you were correct to surmise:

    that maybe the value you're looking for could be in:
    print $oWkC->{Val};

    I had switched over to ParseExcel::Simple because it was easier to use, but I suppose that if I'd like to get this vendor to send me usable files, I'll need to switch back and use the Val value. <sigh>

    ...

    On further examination, that doesn't help the date formatting at all. I'll still have to convert that, but I'm not too worried about it. (It should be related to the Julian date.) Thanks very much for your help!