Perl, ppm, и пытается загрузить зависимости модуля - PullRequest
2 голосов
/ 22 января 2011

У меня установлены Strawberry Perl и PPM.Я не новичок в установке модулей вручную из CPAN, но недавно попал в одну из тех ситуаций, когда модулю требовалась одна зависимость, а -that- зависимость требовалось двадцать ..

Поэтому я решил дать PPM водоворот (потому что это автоматически устанавливает зависимости, верно?), и я изначально думал, что это работает как Ruby Gems.Я загрузил его и набрал:

ppm> install OLE::Storage_Lite

из этого учебника .

Затем я столкнулся с проблемой, сказав: «Не удалось найти файл PPD».

Итак, я следовал этому учебнику , который проведет вас через подключение ссылки на репозиторий, и он все еще не может найти файл PPD.

Мой вопрос: может ли кто-нибудь помочь мнезагрузите модуль Perl, чтобы я мог читать и писать из файлов Excel!?

Решено: Моя проблема оказалась в работе прокси-сервером, который не позволил мне загружать пакеты через PPM.

1 Ответ

3 голосов
/ 22 января 2011

Две вещи:

  1. CPAN также может устанавливать зависимости! :) просто наберите cpan install My::Module в командной строке, чтобы установить модуль и его зависимости.
  2. Вместо этого используйте Win32::OLE.

Win32::OLE - это стандартный модуль для взаимодействия с объектами COM и OLE в Windows, и он прекрасно работает. Он уже включен в Strawberry Perl и работает хорошо! Вам просто нужно посмотреть документы, касающиеся Perl и «OLE Automation». Это будет выглядеть примерно так:

use strict;
use warnings;
use Win32::OLE; 
use Win32::OLE::Const 'Microsoft Excel';  # brin in Excel constants

my $excel = Win32::OLE->new('Excel.Application') or die "oops\n";

Фактически, если вы посмотрите документы Win32 :: OLE на CPAN, вы увидите, что у них есть несколько примеров того, как заставить работать автоматизацию Excel.

После этого при быстром поиске «Excel OLE Automation» появится множество учебных пособий, показывающих все методы, которые необходимо вызвать, и особенности Excel. Но после этого все довольно просто! Некоторые примеры:

my $sheet = $excel->Worksheets(1);  #Gets the first worksheet, 1 indexed
$sheet->Cells($row, $col); # do something to a cell 
$sheet->Columns("A:D");    # do something to some columns
$sheet->Rows($row_number); # do something to a row

Очевидно, что намного больше (API Excel довольно обширный), но с этого стоит начать.

...