2016-02-23 2 views
0

Я смотрел документацию, не нашел ее до сих пор. Я использую «Excel :: Writer :: XLSX» для написания текста для Excel.Excel :: Writer :: XLSX добавляет текст на ячейку

Вопрос: Как добавить текст в ячейку. Предполагаемая ячейка A1 уже написана «abc», как я могу добавить ее с помощью «def» с любым разделителем. Наконец, ячейка A1 должна иметь «abc-def».

В настоящее время он перезаписал старые данные и только показывает «def».

File has say : 
Hostname name abc 
Random Lines 
Hostname name def 
Random Data 



open my $FH, '<', $filenames or die $!; 
while(<$FH>) 
{ 
      if($_ =~ /^Hostname+\s+name+\s(.*)/){ 
      my $hostname = $1; 
      print "\nHostname : $1\n";  
       $worksheet->write(0, 0, $hostname); 
      } 
} 

Теперь, если вы посмотрите на code..when первого регулярное выражения matach его запись на ячейке, как аЬс ... Теперь, когда матч регулярного выражения в следующий раз ... удалить а и писать def..I хотел каким-либо образом добавить его ...

благодарит заранее.

+1

Пожалуйста, сообщите ваш текущий код. – bolav

ответ

1

Excel :: Writer :: XLSX не предоставляет функции для чтения временного файла при его создании. Вы должны сохранить значение вне цикла:

use strict; 
use warnings; 

my $hostname = ''; 
my $delimiter = '-'; 
open my $FH, '<', $filenames or die $!; 
while(<$FH>) 
{ 
    if($_ =~ /^Hostname+\s+name+\s(.*)/){ 
     $hostname .= $delimiter if ($hostname); 
     $hostname .= $1; 
     print "\nHostname : $hostname\n";  
    } 
} 
$worksheet->write(0, 0, $hostname); 

Взломать внутреннюю структуру данных, чтобы получить временное значение this, как он говорит, это:

# Write a shared string or an in-line string based on optimisation level. 
if ($self->{_optimization} == 0) { 
    $index = $self->_get_shared_string_index($str); 
} 
else { 
    $index = $str; 
} 
$self->{_table}->{$row}->{$col} = [ $type, $index, $xf ]; 

Так, чтобы прочитать строку обратно, без Оптимизация:

my $value = $self->{_table}->{$row}->{$col}->[1]; 
+0

Спасибо за комментарии .... Я искал, если есть опция append в excel write module am using. ... – user3185596

+1

Мысль о том, чтобы все знали .... В этом модуле недоступен вариант добавления. Я отправил электронное письмо Джону Макнамаре, который написал модуль, и он подтвердил. Я уже знал об обходном пути, данном Болавом ... я собираюсь принять решение, поскольку оно поможет другим. благодаря – user3185596

Смежные вопросы