Yes, that's pretty easy to do in perl. You'll want to get Spreadsheet::ParseExcel or Spreadsheet::XLSX which will help you disassemble the current spreadsheets. The first page of the documentation will help you dig the data out of your spreadsheet files. Then you can print the data table out as a .CSV file which you can load into a spreadsheet fairly easily, or you can go the extra mile and get Spreadsheet::WriteExcel to generate a new spreadsheet with the information you want.
The tricky bit will be when some of your spreadsheets are missing a row or have an extra row and you want to get the data lined up. So I'd suggest using a hash of arrays, where the first column of the array would be the first file, the second column for the second file, etch.
A rough sketch of what I'd do is like this:
my @Files; my %Table; while (my $FName = shift) { push @Files, $FName; # open spreadsheet & get worksheet, as shown in Spreadsheet::Parse +Excel docs for my $row ($row_min .. $row_max) { my $category = $worksheet->get_cell($row, 0); # first column h +as category my $value = $worksheet->get_cell($row, 1); # second column +has value $Table{$category}[@Files] = $val; # Store into slot in table } }
When you're done, the resulting data might look something like:
@Files = ('file1', 'file2'); %Table = ( # Cat file1 file2 'A' => [ 12, 34 ], 'B' => [ 152, 567 ], );
Let us know if you need any further hints.
...roboticus
When your only tool is a hammer, all problems look like your thumb.
In reply to Re: simple table join script
by roboticus
in thread simple table join script
by slavailn
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |