2017-01-11 8 views
0

Я работаю над скриптом, который принимает некоторые значения из excel и записывает его в CSV-файл. В промежутке мы выполняем некоторые вычисления по данным, а затем записываем их в CSV. Я добавляю строку к значению из excel, а затем сохраняю его в элементе массива. Я использую массив для имитации листа excel для сохранения времени выполнения и, наконец, выбора значений из массива и регистрации его в CSV.Получение двойных котировок в значении в CSV

Но проблема, с которой я столкнулась, это те значения, которые я получаю для столбца, где я добавлял строку с значением excel, давая двойные кавычки. Они не видны в случае excel, но когда я рассматриваю CSV в блокноте ++, я получаю их.

Я пробовал искать, но не получил повода для этого. Может кто-нибудь помочь.

Пожалуйста найти ссылку код ниже:

$Array_Final[$R_FIN][11] = "Last Invoice : ".$Array_Input_DP_Plan3[$W_R][$C_LI]; 
my $csv = Text::CSV->new ({ binary => 1, eol => "\n" }) # should set binary attribute. 
       or die "Cannot use CSV: ".Text::CSV->error_diag(); 

    open my $fh, ">:encoding(utf8)", $VPath."\\Temp\\".$VCsvFileName; 
    my @log; 
    for my $row(1..$#Array_Final){ 
     #COMMENT:EMPTY THE LOG ARRAY 
     $#log = -1; 
     for my $col(1..42){ 
      if(defined $Array_Final[$row][$col] && $Array_Final[$row][$col] ne ""){ 
       push @log, $Array_Final[$row][$col]; 
      } 
      else{ 
       push @log, undef; 
      } 
     } 
     #print (@log); 
     $csv->print ($fh, \@log); 
    } 
    close $fh or die "new.csv: $!"; 

CSV-строк Я получаю так:

20161212-001,20170111, DEL, 12,3, A, ABC ,, , "Последний счет-фактура: 1111" ,,, DP

ответ

2

по умолчанию пробел в поле вызовет котировку. Поскольку нет правила , это должно быть принудительно в CSV, а не наоборот, по умолчанию значение верно для безопасности. Вы можете исключить пространство от этого триггера на установка этого атрибута 0. - Text::CSV doc

Поэтому установка в 0 исправит проблему для вас.

$csv->quote_space (0); 

Вы также можете указать то же самое при создании объекта.

$csv = Text::CSV->new ({ 
      quote_space => 0, 
     }); 
+0

Спасибо, Чанки и пригвоздил его. – Mohit

+0

Это не может удалить кавычки, которые уже существуют при записи файла. Он их не добавит. – zdim

+0

Да, но у меня не было котировок, кроме пробелов, которые приводили к цитатам. – Mohit

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

  • Нет связанных вопросов^_^