3

既に存在するExcelファイルにデータを書き込もうとしていますが、試したコードは新しいシートを作成し、古いシートをデータで消去しています。これは私が使用するコードです

#!/usr/bin/perl –w
use strict;
use Spreadsheet::WriteExcel;

# Create a new Excel file
my $FileName = 'Report.xls';
my $workbook = Spreadsheet::WriteExcel->new($FileName);

# Add a worksheet
my $worksheet1 = $workbook->add_worksheet();  #<- My Doubt



# Change width for only first column

$worksheet1->set_column(0,0,20);

# Write a formatted and unformatted string, row and column
# notation.
$worksheet1->write(0,0, "Hello");
$worksheet1->write(1,0,"HI");
$worksheet1->write(2,0,"1");
$worksheet1->write(3,0,"2");    `   

現在のシートを に割り当てるにはどうすればよいですか$worksheet1。もう 1 つ、既に存在する特定のセルを読み取る必要があります。アドバイスをお願いします。よろしくお願いします。

4

1 に答える 1

4

Spreadsheet::WriteExcelで既存のスプレッドシートを開き、そのように更新することはできません。最初に、Spreadsheet::ReadExcelを使用して開き、出力シートを で開きますWriteExcel。次に、入力ファイルを読み取り、既存のセル、シートなどを書き出し、編集/更新/挿入を行います。次に、両方のファイルを閉じて、以前のファイルを削除し、新しいファイルの名前を変更します (オプションで以前のバージョンをバックアップします)。

Win32::OLEを使用して開くことによって、このプロセスを経ずに特定の Excel ファイルを実際に編集/変更することしかできませんが、そのためには、Windows システム上にいる必要があります (状態についてはわかりません)。 Wine)、これはサーバー上でやりたいことではありません。

でファイルを作成することは、 ...Spreadsheet::WriteExcelでファイルを開くのと同じように考えることができますopen my $fh, '>', 'output.file'output.file

次の行に注意してください。

my $fh = FileHandle->new('>'. $self->{_filename});

Spreadsheet::WriteExcel::Workbook->new

于 2013-08-20T13:01:49.740 に答える