2017-05-15 39 views
-2

Excelで新しい行を追加しようとしていますが、前回のデータは上書きされます。 2行目の同じデータを書き込むために再びループするループのためではなく、代わりに、perlのxlsxモジュールを使用してexcelファイルに新しい行を追加できません

use strict; 
use warnings; 
use Excel::Writer::XLSX; 

my $workbook = Excel::Writer::XLSX->new('ke.xlsx');#create the excel 

my $worksheet = $workbook->add_worksheet(); 

my $server= "se"; 
my $domain = "de"; 
my $backup = "b"; 



# Some sample data for the table. 
my $data = [[ $server, $domain ,$backup], 
    ]; 
$worksheet->set_column('A:G', 20); 

for(my $i = 0 ;$i<2;$i++){ 
    $worksheet->add_table( # Add a table to the worksheet. 
    'A1:G8', 
    { 
     data  => $data, 
     total_row => 1, 
     columns => [ 
      { 

       header => 'server name', 
      }, 

      { 
       header   => 'Domain Name', 


      }, 
      { 
       header   => 'Back Up address', 


      } 
     ] 
    } 
); 

} 
+0

の場合https://metacpan.org/pod/Excel::Writer::XLSX#TABLES-IN-EXCEL

希望をあなたはコードのデバッグに関するヘルプを探していますhttps://ericlippert.com/2014/03/05/how-to-debug-small-programs/ – Yunnosch

+0

私は自分のコードをデバッグする人を探しているわけではありません。 @Yunnosch –

+0

あなたの質問を編集することができる機能があります、それは読むのが難しく、現在あなたに与えられたコードを持っています。このコードがあなたがしたいことをするかどうかという疑問は、それを試して答えることができますか? – Yunnosch

答えて

0

コードがA1:G8に毎回テーブルを書き込む既存のデータを書き換えます。異なる場所にテーブルを配置する場合は、テーブルを変更する必要があります。

+0

連続して「A:G」または「A2:G8」を使用しても機能しません。 –

+0

@kewin:おそらく、テーブルのサイズ以上の座標を移動する必要があります。新しいデータを自動的に既存のコンテンツの途中に置くことはありません。 – Borodin

+0

:どのように私はサイズを増やすことができます –

0

は、サンプルデータを使用して私のために動作するようです:私はこのモジュールに取り組んできました

use strict; 
use warnings; 
use Excel::Writer::XLSX; 

my $workbook = Excel::Writer::XLSX->new('ke.xlsx');#create the excel 

my $worksheet = $workbook->add_worksheet(); 

#my $server= "se"; 
#my $domain = "de"; 
#my $backup = "b"; 

# Some sample data for the table. 
#my $data = [[ $server, $domain ,$backup], 
# ]; 

my $data = [ ["se", "de","b"], 
      ["ll", "pp","t"], 
      ["yu", "ar","e"], 
      ["gt", "po","w"], 
      ["br", "tp","g"] ]; 
$worksheet->set_column('A:G', 20); 

for(my $i = 0 ;$i<2;$i++){ 
    $worksheet->add_table( # Add a table to the worksheet. 
    'A1:G8', 
    { 
     data  => $data, 
     total_row => 1, 
     columns => [ 
      { 
       header => 'server name', 
      }, 

      { 
       header => 'Domain Name', 
      }, 
      { 
       header => 'Back Up address', 
      } 
     ] 
    } 
); 

} 

enter image description here

+0

私は間違っている、$データは事前​​に提供されていません私は私が含まれていない外側のループを持って、基本的にデザイン情報を取得し、$データ、テーブルを追加するループは、$ dataを次の行に追加する必要があります。あらかじめ$ data変数にインクルードしてはいけません。 my $ data = [[$ server、$ domain、$ backup]、 ];同じままにする必要があります、私は手動で追加しないように自動化しようとしています。 –

0

、しかし、我々は、我々は$ worksheet-> write_rowを代わりに使用add_tableを使用していませんでした。 は、私はあなたが使用してデータを書き込んでみるべきだと思いwrite_row https://metacpan.org/pod/Excel::Writer::XLSX

あなたはご覧下さいadd_tableの詳細例については、その後、write_rowを使用しない場合::)に役立ちます

関連する問題