#!/usr/bin/perl
use strict;
use warnings;
use Spreadsheet::ParseExcel;
use Spreadsheet::ParseExcel::SaveParser;
# Open an existing file with SaveParser
my $parser = Spreadsheet::ParseExcel::SaveParser->new();
my $template = $parser->Parse('template.xls');
my $parser1 = Spreadsheet::ParseExcel::SaveParser->new();
my $template1 = $parser1->Parse('test_perl.xls');
my $worksheet11 = $template->worksheet(0);
$template1->AddWorksheet('New Data');
my $worksheet22 = $template1->worksheet(0);
my $cellz; my $valua;my $format_number;
for (my $i = 0; $i < 400; $i++) {
for (my $j = 0; $j < 20; $j++) {
$cellz = $worksheet11->get_cell( $i, $j );
if($cellz){
$valua = $cellz->unformatted(); $format_number = $cellz->{FormatNo};
$worksheet22->AddCell($i, $j, $valua,$format_number);
}
}
}
my $workbook;
$workbook = $template1->SaveAs('newfile1.xls');
Я хочу скопировать содержимое из одного файла Excel в другой, сохранив формат. Здесь под форматом я подразумеваю цвет заливки, границы, полужирный, курсив и т. Д. Я написал код для этого, где я извлекаю значение и номер формата из одного файла Excel и просто записываю в другой лист Excel. Я сослался на следующую ссылку для этого.
https://metacpan.org/pod/Spreadsheet::ParseExcel::SaveParser
Проблема в том, что он не сохраняет формат. Я думаю, что проблема заключается в том, что номер формата не является универсальным, что означает, что номер формата означает две разные вещи в двух разных файлах Excel.
Когда я запускаю этот код, я получаю ошибку
Использование неинициализированного значения в хеш-элементе в /pkg/qct/software/perl/5.18.0_test/lib/site_perl/5.18.0/Spreadsheet/ParseExcel.pm строка 2383.
По-моему, это означает, что извлеченный номер формата ничего не значит для другого файла. Пожалуйста, дайте мне знать решение этой проблемы
В основном моя проблема в том, что я изменил два файла xls с помощью Spreadsheet :: ParseExcel :: SaveParser, и я хочу объединить эти два файла xls с помощью Perl. Пожалуйста, предложите способ объединения двух файлов xls с использованием Perl любым другим способом, так что форматирование сохраняется. Пожалуйста, предложите не-Perl способ, используя другой язык кодирования.
Этот вопрос также опубликован на perl-monks:
https://perlmonks.org/index.pl?node_id=11101251