我有一個包含大量數據的 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);結果在新文件中我得到了這樣的行: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 回答

慕碼人8056858
TA貢獻1803條經驗 獲得超6個贊
您的代碼看起來不錯,您只需要放在.csvline 上$temp_table = fopen('write.csv','w');,因為您fputcsv()在 while 循環中使用函數。它基于 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);
- 1 回答
- 0 關注
- 90 瀏覽
添加回答
舉報
0/150
提交
取消