Сам столкнулся с подобной проблемой. Странно что у других людей подобной проблемы не было.
Т.е. я тоже хочу поменять одну или несколько ячеек и для этого мне надо один файл читать, а в другой писать, а редактировать ничего найти не могу.
Возможно, это связано со сложность формата, т.е. может после редактирования получится что файл перестанет открываться, может поэтому и решили отказаться от этого.#!/usr/local/bin/perl
use strict;
use Spreadsheet::ParseExcel;
use Spreadsheet::WriteExcel;
print "Content-type:text/html; charset=windows-1251\n\n";
print "<html>\n<head>";
print "<TITLE>Конвертор</TITLE>\n<META NAME=\"content\" CONTENT=\"text/html; charset=windows-1251\">\n";
print "</HEAD><BODY>\n";
my $excel = Spreadsheet::ParseExcel::Workbook->Parse('/home/.../file1.xls');
my $workbook = Spreadsheet::WriteExcel->new('/home/.../file2.xls');
my $worksheet = $workbook->add_worksheet();
foreach my $sheet (@{$excel->{Worksheet}}) {
printf("Sheet: %s\n", $sheet->{Name});
$sheet->{MaxRow} ||= $sheet->{MinRow};
foreach my $row ($sheet->{MinRow} .. $sheet->{MaxRow}) {
$sheet->{MaxCol} ||= $sheet->{MinCol};
foreach my $col ($sheet->{MinCol} .. $sheet->{MaxCol}) {
my $cell = $sheet->{Cells}[$row][$col];
if ($cell) {
# $worksheet->write(0, 0, "Hi Excel!");
$worksheet->write($row, $col, $cell->{Val});
$cell->{Val}='333';
printf("( %s , %s ) => %s\n", $row, $col, $cell->{Val});
}
}
}
}
$excel->close();
$workbook->close();
print "</body>\n</html>";
Оно работает. но без форматирования и без русских букв - вместо них фигня какая-то.
если написать
$worksheet->write($row, $col, $cell->{Val}, $cell->{Format});
то ругается, не понимает.