もっと詳しく

エクセルで作成したCSVアップロードでエラー

複数の『商品カテゴリID』と『タグID』のある商品CSVをエクセルで作成し、EC-CUBE4.1.1の管理画面からアップロードしようとしたところ、以下のようなエラーが出て、アップロードに失敗しました。

EC-CUBE CSVアップロードエラー

エラーが発生しました。2行目以降の登録処理はキャンセルされました。
[ERROR] 2行目のタグ(ID)「15"」が存在しません。
[ERROR] 2行目のタグ(ID)「"7」が存在しません。
[ERROR] 2行目の商品カテゴリ(ID)「33"」が存在しません。
[ERROR] 2行目の商品カテゴリ(ID)「"7」が存在しません。

原因

カテゴリIDやタグIDを複数指定する場合、"7,15"といった感じでダブクォーテーションで囲まないといけません。よって、エクセル上は"7,15"と表示されているのですが、CSVをメモ帳や他のテキストエディタで開くと"""7,15"""となっていました。

以下はエクセルでの入力画面。

EC-CUBE 商品CSVアップロード用 エクセル編集画面

メモ帳で開くと、ダブルクォーテーションが3つ連続していました。これがエラーの原因です。

EC-CUBE 商品CSVアップロード用 メモ帳編集画面

恐らく、書式が「文字列」になっている部分は「カンマ」があるとCSVの列が崩れないよう、自動的にダブルクォーテーションが追加されるようになっているみたいですね。更にダブルクォーテーションがあると、エスケープの意味でダブルクォーテーションをダブルクォーテーションで囲うようになるんだと思います。

これを修正すると正常にアップロードできるようになります。

回避策

エクセルで編集する場合、『商品カテゴリID』と『タグID』の列は書式を「文字列」にして「"」無しにすれば"7,15"のようにCSV出力できます。

EC-CUBE 商品CSVアップロード用 エクセル編集画面

メモ帳でCSVを開いてみると、エクセルではダブルクォーテーションを付けていないのに、ちゃんとダブルクォーテーションが一つ付いていました。

EC-CUBE 商品CSVアップロード用 メモ帳編集画面

無事アップロード完了

CSVを修正してアップロードすれば、以下のように成功するはずです。

EC-CUBE CSVアップロード成功

CSVファイルをアップロードしました。
[SUCCESS] 〇〇〇~〇〇〇行目を登録しました。