Скачиваем с http://search.cpan.org/ модули
OLE-Storage_Lite-0.19
Spreadsheet-WriteExcel-2.40
DBD-Oracle-1.68
Для каждого выполняем от рута
perl Makefile.pl
make
make install
Для записи кириллицы с файла:
#!/usr/bin/perl
use Spreadsheet::WriteExcel;
use Encode 'encode';
use Encode 'decode';
my $workbook = Spreadsheet::WriteExcel->new('test.xls');
my $worksheet = $workbook->add_worksheet();
#Добавляем шрифт с поддержкой юникода в свойства ячейки
my $uni_font = $workbook->addformat(font => 'Arial Unicode MS');
my $uniString ="Текст с кирилицей ФЫВА ъЪЇї TeSt";
#переводим с UTF-8 в Latin-1
my $uniString1 = decode('UTF-8',$uniString);
#здесь должно быть уже читаемо.
$worksheet->write(1, 0, $uniString1, $uni_font );
#переводим с Latin-1 в UTF-16
$uniString2 = encode('UTF-16',$uniString1);
#А вот это будет читаемо вообще везде.
$worksheet->write_utf16be_string(3, 0, $uniString2, $uni_font );
Теперь для оракла - перекодируем в UTF16:
my $sth = $dbh->prepare("select convert(Column_name,'AL16UTF16') from dual") or die $dbh->errstr;
Ну и пишем используя то же, что и выше:
my $rowcnt =0;
while (@CurrRow = $sth->fetchrow) {
$worksheet->write_utf16be_string($rowcnt, 0, $CurrRow[0], $uni_font );
}
Комментариев нет:
Отправить комментарий