从一个读取并写入第二个excel文件-PHP

时间:2020-01-01 11:42:04

标签: php excel

我有一个包含大量数据的excel文件,这是在编辑器中打开一行的示例:

"A","001270","3755","TRIPP LITE MASTER-POWER","UPS EXTERNAL BATTERY PACK TOWER","12/24V APS INVERTER CHARGERS","0000000000000421.20","BP-260","000019.80","0037332080011","0015.00","0014.00","0019.50","","0000000000000222.80","0000000000000000.00","N","","UPS-C","BATT","0101","","N","","00000000000000.0000","2 YEAR LTD",""

我有这样的代码,可以在一个条件下很好地工作

$table = fopen('read.csv','r');
$temp_table = fopen('write','w');
while (($data = fgetcsv($table)) !== FALSE){
    if(in_array($data[1],$spec)){ // this is if you need the first column in a row
        continue;
    }
    fputcsv($temp_table,$data);
}
fclose($table);
fclose($temp_table);

因此,新文件中的ive出现了这样的行:

A,001270,3755,"TRIPP LITE MASTER-POWER","UPS EXTERNAL BATTERY PACK TOWER","12/24V APS INVERTER CHARGERS",0000000000000421.20,BP-260,000019.80,0037332080011,0015.00,0014.00,0019.50,,0000000000000222.80,0000000000000000.00,N,,UPS-C,BATT,0101,,N,,00000000000000.0000,"2 YEAR LTD",

问题是当我在编辑器中打开一个新文件时,它的值的开头和结尾没有“”,这就是问题所在,我做错了什么?

1 个答案:

答案 0 :(得分:2)

您的代码看起来不错,您只需将.csv放在行$temp_table = fopen('write.csv','w');上,因为您在while循环中使用了fputcsv()函数。根据csv文件标准生成输出。如果您获得.txt格式的输出,则某些列将缺少引号""。在这种情况下,您需要手动处理。

修改

如果您不想将其输出为csv,则可以将代码替换为以下更新的代码。

$table = fopen('read.csv','r');
$temp_table = fopen('write.txt','w');
while (($data = fgetcsv($table)) !== FALSE){
    $data = '"'. implode('","', $data) .'"'; // this line will add the comma and double quote to each array value and wrap the string with double quote.
    fputs($temp_table,$data);
}
fclose($table);
fclose($temp_table);