[PERL]Compter ligne remplie fichier excel
Saoua83
-
Saoua83 -
Saoua83 -
Bonjour,
Voici mon problème, je dois convertir un fichier .XLS en fichier .TSV, et je ne peux pas prévoir combien de lignes de champs seront saisies dans le ficheir, comment faire pour tester si la première valeur de ma ligne courante est vide et ainsi stopper la conversion :/
Si quelqu'un à une idée, merci beaucoup.
Voici mon code pas propre pas optimiser je sais...
Voici mon problème, je dois convertir un fichier .XLS en fichier .TSV, et je ne peux pas prévoir combien de lignes de champs seront saisies dans le ficheir, comment faire pour tester si la première valeur de ma ligne courante est vide et ainsi stopper la conversion :/
Si quelqu'un à une idée, merci beaucoup.
Voici mon code pas propre pas optimiser je sais...
#!/usr/bin/perl use strict; use warnings; use Spreadsheet::ParseExcel; sub xls_csv_convert{ my ($file,$convert_file) = @_; open (WRITER,"> $convert_file") or die ("E/S : $!\n"); my $excel = Spreadsheet::ParseExcel::Workbook->Parse($file); my $sheet = ${$excel->{Worksheet}}[0]; foreach my $row (0 ... 384 ){ my $cell1 = $sheet->{Cells}[$row][0]; #if ($cell1->{Val} eq '') { break;} my $cell2 = $sheet->{Cells}[$row][1]; if ($cell2->{Val} eq '') { $cell2->{Val} = 'NONE';} my $cell3 = $sheet->{Cells}[$row][2]; if ($cell3->{Val} eq '') { $cell3->{Val} = 'NONE';} my $cell4 = $sheet->{Cells}[$row][3]; if ($cell4->{Val} eq '') { $cell4->{Val} = 'NONE';} my $cell5 = $sheet->{Cells}[$row][4]; if ($cell5->{Val} eq '') { $cell5->{Val} = 'NONE';} my $cell6 = $sheet->{Cells}[$row][5]; if ($cell6->{Val} eq '') { $cell6->{Val} = 'NONE';} my $cell7 = $sheet->{Cells}[$row][6]; if ($cell7->{Val} eq '') { $cell7->{Val} = 'NONE';} my $cell8 = $sheet->{Cells}[$row][7]; if ($cell8->{Val} eq '') { $cell8->{Val} = 'NONE';} my $cell9 = $sheet->{Cells}[$row][8]; if ($cell9->{Val} eq '') { $cell9->{Val} = 'NONE';} my $cell10 = $sheet->{Cells}[$row][9]; if ($cell10->{Val} eq '') { $cell10->{Val} = 'NONE';} my $cell11 = $sheet->{Cells}[$row][10]; if ($cell11->{Val} eq '') { $cell11->{Val} = 'NONE';} my $cell12 = $sheet->{Cells}[$row][11]; if ($cell12->{Val} eq '') { $cell12->{Val} = 'NONE';} my $cell13 = $sheet->{Cells}[$row][12]; if ($cell13->{Val} eq '') { $cell13->{Val} = 'NONE';} my $cell14 = $sheet->{Cells}[$row][13]; if ($cell14->{Val} eq '') { $cell14->{Val} = 'NONE';} my $cell15 = $sheet->{Cells}[$row][14]; if ($cell15->{Val} eq '') { $cell15->{Val} = 'NONE';} my $cell16 = $sheet->{Cells}[$row][15]; if ($cell16->{Val} eq '') { $cell16->{Val} = 'NONE';} my $res = "$cell1->{Val}\t$cell2->{Val}\t$cell3->{Val}\t$cell4->{Val}\t$cell5->{Val}\t$cell6->{Val}\t$cell7->{Val}\t$cell8->{Val}\t$cell9->{Val}\t$cell10->{Val}\t$cell11->{Val}\t$cell12->{Val}\t$cell13->{Val}\t$cell14->{Val}\t$cell15->{Val}\t$cell16->{Val}"; $res =~s/\n//; $res =~s/\x01\x53/oe/g; $res =~s/\x00//g; print WRITER "$res\n"; } close WRITER; }
A voir également:
- [PERL]Compter ligne remplie fichier excel
- Fichier bin - Guide
- Fichier epub - Guide
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide
- Aller à la ligne excel - Guide
4 réponses
Seulement la première case, car dans mon cas si celle-ci est vide alors automatiquement la ligne est vide. :)