在 CSV 中的值中获取双引号

Getting Double Quotes in a value in CSV

我正在编写一个脚本,该脚本从 excel 中获取一些值并将其记录到 CSV 文件中。在这两者之间,我们对数据执行一些计算,然后记录到 CSV。我将一个字符串附加到 excel 中的一个值,然后将其保存到一个数组元素中。我正在使用数组来模拟 excel sheet 以节省执行时间,最后从数组中选取值并将其记录到 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,,,"Last Invoice : 1111",,,DP

By default, a space in a field would trigger quotation. As no rule exists this to be forced in CSV, nor any for the opposite, the default is true for safety. You can exclude the space from this trigger by setting this attribute to 0. -Text::CSV doc

因此将其设置为 0 将为您解决问题。

$csv->quote_space (0);

您也可以在创建对象时指定相同的内容。

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