Привет, Кстати, если не влезаете по строкам/столбцам в XLS (или просто хотите меньшие по размеру файлы на выходе) - пользуйтесь Excel::Writer::XLSX - http://search.cpan.org/~jmcnamara/Excel-Writer-XLSX-0.76/lib/Excel/Writer/XLSX.pm - интерфейс такой же как у вашего: http://search.cpan.org/~jmcnamara/Excel-Writer-XLSX-0.76/lib/Excel/Writer/XLSX.pm#Excel::Writer::XLSX_and_Spreadsheet::WriteExcel
Евгений On Mar 20, 2014, at 2:27 PM, Artem Zhuravlev <[email protected]> wrote: > Большое спасибо. > > > 20 марта 2014 г., 14:09 пользователь Alexander Lourier <[email protected]> > написал: > Тогда - только архив. HTTP не поддерживает multipart-ответы. > Можно ещё показать HTML-страничку, с которой можно каждый файл по отдельности > кликом открыть. > > И ещё. Вы небезопасно используете временный файл для генерации XLS. Если два > пользователя попытаются выполнить такую операцию, то одному может достаться > файл от другого или его битый кусок. Если в вашем случае возможно > генерировать файл в памяти, то лучше сделать именно так: > > my $xls_data; > my $handle = IO::Scalar->new(\$xls_data); > my $workbook = Spreadsheet::WriteExcel->new($handle); > .... > $workbook->close; > $self->render(data => $xls_data); > > > 20 марта 2014 г., 9:24 пользователь Artem Zhuravlev <[email protected]> > написал: > > Файлы через веб, загрузка клиентом. > > > 20 марта 2014 г., 12:10 пользователь Alexander Lourier <[email protected]> > написал: > > Зависит от того, что такое $self->res, и как вы хотите отдавать файлы. > Если вы формируете email, то Content-type самому письму задаёте > multipart/mixed, потом к письму цепляете каждый аттач отдельным part. Если > это MIME::Entity, то примерно так: > $self->res->attach(Data => $document, Type => 'application/vnd.ms-excel', > Encoding => 'base64'); > $self->res->attach(....); > > > > 2014-03-20 8:54 GMT+01:00 Artem Zhuravlev <[email protected]>: > > > Добрый день. > > Столкнулся с проблемой рендеринга xls файлов. > > my $self = shift; > my $dir = "/tmp/writeexcel/"; > my $template = "application"; > my $suffix = ".xls"; > > my $filename = $dir . $template . $suffix; > # Create a new workbook called simple.xls and add a worksheet > my $workbook; > $workbook = Spreadsheet::WriteExcel->new($filename) or die "Problems > creating new Excel file: $!" unless defined $workbook; > my $worksheet = $workbook->add_worksheet("Заявка"); > ... формируем xls файл ... > $workbook->close() or die "Error closing file: $!"; > > my $document = do { > local $/ = undef; > open my $fh, "<", $filename > or die "could not open $filename: $!"; > <$fh>; > }; > > $self->res->headers->content_disposition("attachment; filename='file.xls';"); > $self->render(data => $document); > > Тут все хорошо. > > Не знаю как быть в случае если нужно отдать сразу несколько файлов. > > Пните куда смотреть. Думал над тем что архивировать файлы и передать архив. > > Спасибо. > > P.S. Суть не в самом решении, конечно не буду против, а в том куда копать. > > -- > Best regards, > Artem V. Zhuravlev > > -- > Moscow.pm mailing list > [email protected] | http://moscow.pm.org > > > > -- > Moscow.pm mailing list > [email protected] | http://moscow.pm.org > > > > > -- > Best regards, > Artem V. Zhuravlev > > -- > Moscow.pm mailing list > [email protected] | http://moscow.pm.org > > > > -- > Moscow.pm mailing list > [email protected] | http://moscow.pm.org > > > > > -- > Best regards, > Artem V. Zhuravlev > -- > Moscow.pm mailing list > [email protected] | http://moscow.pm.org
-- Moscow.pm mailing list [email protected] | http://moscow.pm.org
