Forum Webscript.Ru

Программирование => Perl => Тема начата: skooby от 19 Декабря 2007, 19:47:13

Название: Работа с Excel
Отправлено: skooby от 19 Декабря 2007, 19:47:13
Доброго времени суток.
Проблема: Используя модуль Spreadsheet::Read, я считываю данные из ячейки файла Excel при условии, что ячейка содержит 20-ти значное число. Но при попытке просто вывести на экран данные из ячейки, на экране:

Use of uninitiliazed value in pattern (m//) at D:\\...\\conv.pl line 35.
Use of uninitiliazed value in pattern (m//) at D:\\...\\conv.pl line 35.
Use of uninitiliazed value in pattern (m//) at D:\\...\\conv.pl line 35.
Use of uninitiliazed value in pattern (m//) at D:\\...\\conv.pl line 35.
Use of uninitiliazed value in pattern (m//) at D:\\...\\conv.pl line 35.
...
Use of uninitiliazed value in pattern (m//) at D:\\...\\conv.pl line 35.
Use of uninitiliazed value in pattern (m//) at D:\\...\\conv.pl line 35.


скрипт:

#!Perl.exe -w
# ----------------------------------------
use strict;
use XBase;     # dbf
use Spreadsheet::Read; # xls
# ------------------------------------------
my $count = 100;
my (@xls,@dbf) = ();
# - Считываем файлы  ----------------------
while (<*.xls>) { chomp $_; push @xls,$_; }
while (<*.dbf>) { chomp $_; push @dbf,$_; }
# ------------------------------------------

&processing_xls(@xls);

sub processing_xls
{
my @xls_files = @_;
my $flag = 0;

if (length(@xls_files) != 0)
{
foreach my $xls (@xls_files)
{
my $ref = ReadData($xls);

for my $i (1..$count)
{
for my $j (\'A\'..\'Z\')
{
print $ref->[1]{"$j$i"} if $ref->[1]{"$j$i"} =~ m/[0-9]{20}/; # <-------- 35-я строка

}
print "\\n";
}

}
}

return 0;
}

Название: Работа с Excel
Отправлено: skooby от 21 Декабря 2007, 19:33:22
Сделал проверку значения ячеек, выяснил что не все ячейки имеют значение и из-за этого появлялись такие сообщения. Вопрос отпал.