сила опеннета, взываю к тебе!!1
есть некий .xls-файл
если его смотреть через эксель (openoffice), то там есть уровни вложения (слева цифры 12345), и если их открыть, то чётко видны отступы - где категории, где перечень товаров, итд - они лесенкой идут
но при парсинге его (пробовал: xls2csv, xlhtml, Spreadsheet::ParseExcel) эти отступы не сохраняются. уровни вложения не сохраняются
может модуль какой есть для такого дела или какое другое решение проблемы?upd: вот есть некий Spreadsheet::ParseExcel::Format
и там есть $format->{Indent}
только не пойму, как его задействовать..
> upd: вот есть некий Spreadsheet::ParseExcel::Format
> и там есть $format->{Indent}
> только не пойму, как его задействовать..
my ( $row_min, $row_max ) = $worksheet->row_range();
my ( $col_min, $col_max ) = $worksheet->col_range();
for (my $y=$row_min; $y<= $row_max; $y++) {
for (my $x=$col_min; $x<= $col_max; $x++) {
my $cell = $worksheet->get_cell($y, $x);
my $format = $cell->get_format();
print STDERR $format->{Indent},"\n";
}
}Как-нибудь вот так.
вот рабочий вариант:
#!/usr/bin/perl -wuse strict;
use Spreadsheet::ParseExcel;my $parser = Spreadsheet::ParseExcel->new();
my $workbook = $parser->parse('Book1.xls');if ( !defined $workbook ) {
die $parser->error(), ".\n";
}for my $worksheet ( $workbook->worksheets() ) {
my ( $row_min, $row_max ) = $worksheet->row_range();
my ( $col_min, $col_max ) = $worksheet->col_range();for my $row ( $row_min .. $row_max ) {
for my $col ( $col_min .. $col_max ) {my $cell = $worksheet->get_cell( $row, $col );
next unless $cell;my $format = $cell->get_format();
print "Row, Col = ($row, $col)\n";
print "Value = ", $cell->value(), "\n";
print "Indent = ", $format->{Indent}, "\n";print "\n";
}
}
}
__END__
>[оверквотинг удален]
> print "Value = ", $cell->value(),
> "\n";
>
> print "Indent = ", $format->{Indent}, "\n";
>
> print "\n";
> }
> }
> }
> __END__что-то не работает