Как я могу изменить существующую рабочую книгу Excel с Perl?

не волнуйтесь, здесь подобная проблема к Вашему, просто перейдите к ссылке и проверьте ответы, надейтесь, что помогает

, Как загрузить человечность, когда окна были переустановлены?

8
задан brian d foy 2 September 2009 в 09:17
поделиться

4 ответа

Таблица :: ParseExcel будет читать в существующих файлах Excel:

my $parser   = Spreadsheet::ParseExcel->new();
# $workbook is a Spreadsheet::ParseExcel::Workbook object
my $workbook = $parser->Parse('Book1.xls');

Но на самом деле вам требуется Таблица :: ParseExcel :: SaveParser , который представляет собой комбинацию Spreadsheet :: ParseExcel и Spreadsheet :: WriteExcel . Внизу документации есть пример .

14
ответ дан 3 November 2019 в 14:19
поделиться

Если у вас установлен Excel, то сделать это с помощью Win32 :: OLE почти тривиально. Вот пример из собственной документации Win32 :: OLE :

use Win32::OLE;

# use existing instance if Excel is already running
eval {$ex = Win32::OLE->GetActiveObject('Excel.Application')};
die "Excel not installed" if $@;
unless (defined $ex) {
    $ex = Win32::OLE->new('Excel.Application', sub {$_[0]->Quit;})
            or die "Oops, cannot start Excel";
}

# get a new workbook
$book = $ex->Workbooks->Add;

# write to a particular cell
$sheet = $book->Worksheets(1);
$sheet->Cells(1,1)->{Value} = "foo";

# write a 2 rows by 3 columns range
$sheet->Range("A8:C9")->{Value} = [[ undef, 'Xyzzy', 'Plugh' ],
                                   [ 42,    'Perl',  3.1415  ]];

# print "XyzzyPerl"
$array = $sheet->Range("A8:C9")->{Value};
for (@$array) {
    for (@$_) {
        print defined($_) ? "$_|" : "<undef>|";
    }
    print "\n";
}

# save and exit
$book->SaveAs( 'test.xls' );
undef $book;
undef $ex;

По сути, Win32 :: OLE дает вам все, что доступно для приложений VBA или Visual Basic, которые включает в себя огромное количество функций - все, от автоматизации Excel и Word до перечисления и подключения сетевых дисков через Windows Script Host. Он входит в стандартную комплектацию последних нескольких редакций ActivePerl.

9
ответ дан 3 November 2019 в 14:19
поделиться

В документации Spreadsheet :: WriteExcel описан раздел Изменение и перезапись электронных таблиц .

Файл Excel - это двоичный файл внутри двоичного файла. Он содержит несколько взаимосвязанных контрольных сумм, и изменение даже одного байта может привести к его повреждению.

Таким образом, вы не можете просто добавить или обновить файл Excel. Единственный способ добиться этого - прочитать весь файл в памяти, внести необходимые изменения или дополнения, а затем снова записать файл.

Вы можете читать и перезаписывать файл Excel с помощью модуля Spreadsheet :: ParseExcel :: SaveParser который является оболочкой для Spreadsheet :: ParseExcel и Spreadsheet :: WriteExcel. Он является частью пакета Spreadsheet :: ParseExcel .

Также есть пример.

3
ответ дан 3 November 2019 в 14:19
поделиться

Модуль Spreadsheet :: ParseExcel :: SaveParser является оболочкой для Spreadsheet :: ParseExcel и Spreadsheet :: WriteExcel.

Недавно я обновил документацию, и, надеюсь, является более ясным примером того, как это сделать .

1
ответ дан 3 November 2019 в 14:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: