doy / spreadsheet-parsexlsx

parse XLSX files
http://metacpan.org/release/Spreadsheet-ParseXLSX
27 stars 35 forks source link

unimplemented type b at C:/Perl/site/lib/Spreadsheet/parseXLSX.pm line 145. #6

Closed Drokaten closed 11 years ago

Drokaten commented 11 years ago

Using excel files generated with Excel 2010 32 bit and i get this error on any of the 100 something files i have:

unimplemented type b at C:/Perl/site/lib/Spreadsheet/parseXLSX.pm line 145.

using Activestate Perl 32 bit and ParseXLSX 0.06 on Windows 7 Enterprise 64bit

example doc on google docs (unconverted) https://docs.google.com/file/d/0B9gUwIwk8VqwUU1TeWc1b1BYcUk/edit?usp=sharing

Code snippet:

sub processfile{ $current=shift(@); print "PROCESS FILE 1 $current\n"; my $parser = Spreadsheet::ParseXLSX->new()||die "couldnt create new XLSX "; print "PROCESS FILE 2 $current\n"; my $workbook = $parser->parse("$current"); print "PROCESS FILE 3 $current\n";

doy commented 11 years ago

Thanks, fixed in 0.07.

Drokaten commented 11 years ago

It runs now but the values that are kicking out aren't the same as what the identical script using Spreadsheet::ParseExcel with the same files converted to XLS are kicking out they seem jumbled up/randomized.

I'm essentially reading the DSGroups tab and kicking out everything after row 7(6) col a and b (0,1) until i reach the max row for the sheet and printing those cells to an outfile tab separated: expected output (from ParseExcel) Group Name Group Owners AD Password Reset (BCS) - Hopewell Dan Barry bcsns Valerie Varner Forms TL Hopewell - MBX Access MBX or Distribution group H&D Hopewell Schedulers - MBX Access MBX or Distribution group hopewell Gregg Wilson hris users MBX or Distribution group hwc_custops Kelly Simmons hwc_reschedules_full NO OWNER

Actual output: (note Fdrive in column 1(0) is actually from a different tab) Group Name Group Owners
Valerie Varner; Teena McCleary trng
F Drive trng_override2
Chad Goldsmith; Valerie Varner Paul Meyer
MBX or Distribution group Paul Meyer
HWC_Custops (N Drive) forms tl hopewell - mbx access
Hopewell Paul Meyer
bcsns trng_supervisor hopewell Dan Barry

Drokaten commented 11 years ago

If you need additional materials from me, let me know. I am of the understanding the behavior of this module should be the same as Spreadsheet::ParseExcel. As best I can tell its grabbing random processed elements out of order or possibly grabbing the correct cell but from the wrong worksheet. (F Drive was an element in the correct range but from the first worksheet processed. Seems to randomly reference the previous sheet). It should be outputting cell 6,0:6,1:7,0:7,1 until max_row and behaves this way even when I explicitly set the row/column range for my $row ( 6 .. 12 ) { for my $col ( 0 .. 1) {

doy commented 11 years ago

Could you write a simple test script for me?

Drokaten commented 11 years ago

I will get one out as soon as I can.. Do you have an upload location? Not sure i trust google docs to not mess with formatting.

doy commented 11 years ago

You can just copy and paste it into this ticket.

Drokaten commented 11 years ago

https://docs.google.com/document/d/1R3V_UVSKPp2NQPiU0LnYV2yMbSdc53Yh-wbdf_tgIDA/edit?usp=sharing

i put the script in a document.. it should be fine.

The behavior I'm seeing is that somehow each time a new cell is processed, the worksheet reference and or cell number is being changed somewhere in the module

the script i've posted when you replace ::ParseXLSX with ParseExcel and use an XLS converted doc correctly outputs the DSGgroups tab column A/B after "Data Sharing Groups"

ParseXLSX seems to grab a cell (not necessarily the same row either) from the BasicAccess tab, the SAP tab and the DSGroups tab.

It appears to be "Consistently Random".

doy commented 11 years ago

This should be fixed in the repository now. Can you let me know if there are still any more errors? Otherwise I'll get this released.

Drokaten commented 11 years ago

Worked for that test file but on a more complicated one is still jumbling, its definitely more orderly though. try this file: https://docs.google.com/file/d/0B9gUwIwk8VqwdENvX1R6QUhabHM/edit?usp=sharing

doy commented 11 years ago

It seems to be working for me, using a similar test to the one I used for the previous file. Can you give me an example of something that's still failing?

Drokaten commented 11 years ago

This is under the assumption I properly installed the new module.. CPAN install Spreadsheet::ParseXLSX is all I need right?

On Tuesday, September 10, 2013, Jesse Luehrs wrote:

It seems to be working for me, using a similar test to the one I used for the previous file. Can you give me an example of something that's still failing?

— Reply to this email directly or view it on GitHubhttps://github.com/doy/spreadsheet-parsexlsx/issues/6#issuecomment-24169391 .

doy commented 11 years ago

No, I hadn't released the changes yet because I wanted to make sure all of your issues were fixed. I can do that now.

doy commented 11 years ago

Released as version 0.08.

Drokaten commented 11 years ago

took me a bit to get it installed manually.. activestate perl takes a few extra hoops and googling. I'm a few years rusty but activestate doesn't have make.. it has dmake etc etc..

ran it against 36 files and it worked perfectly.. you have saved me some major hassle converting a few hundred files to xls before i can process them..

Thank you for your prompt and professional response and most importantly ... your time.

THIS is why i love PERL.. try getting something like this fixed by Microsoft before next quarter.. or year.

Thanks again.