サポート » プラグイン » Trust Formで書き出されるCSVファイルを改善したい

  • 解決済 koharu

    (@koharu)


    お世話になります。

    Trust Form(バージョン1.8.7)を使用してアンケートフォームを作成し、回答一覧をCSVに書き出しているのですが、そのCSVをExcelで開いた際に2点の問題に直面しまして、現在頭を抱えています。

    1)
    テキストエリアの改行がCSVに反映されるため「1行1回答」ではなくなってしまう。

    →改行を無視して良いので1行1回答になるようにしたい

    2)
    チェックボックスで複数回答した(例えばAとBにチェック入れた)場合、
    「A,B」のようにカンマで区切られてCSVが書き出されるため、
    該当項目以降の列がずれていってしまう。

    →最低限、複数回答があった場合には「”A,B”」のようにダブルクォーテーションで
     囲まれるようにしたい

    どなたか上記の問題を解決できる妙案をお持ちでしたらご助言いただければ幸いです。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • プラグインのファイル trust-form.php の中に関数 entries_admin_init があり、下記のようなコードでCSVを一行ずつ出力していますね。

    echo implode(',', $csv_ti[0]) . "\r\n";
    foreach ($csv as $data) {
    	echo implode(',', $data) . "\r\n";
    }

    ここを変更すれば、例えば「タブ区切り」として出力できるのではないでしょうか。

    トピック投稿者 koharu

    (@koharu)

    ghvstさん、ご助言ありがとうごさいます。

    ここを変更すれば、例えば「タブ区切り」として出力できるのではないでしょうか。

    なるほど!と思いまして、さっそくタブ区切りとして出力を試してみました。
    が、タブ区切りのCSVは書き出せたものの、次のExcelで開くところで複数回答項目にカンマがあるせいで、意図しない場所で自動的にセルを分けられてしまいました…。

    なので、教えていただいた部分のコードをちょっと書き換えて、出力時にダブルクォーテーションで無理やり囲むようにさせました。

    echo implode(',', $csv_ti[0]) . "\r\n";
    foreach ($csv as $data) {
       echo '"';
       echo implode('","', $data);
       echo '"'."\r\n";
    }

    プラグイン更新時に毎回書き換える必要があったり、そもそもコードの書き方として良いのか不安があったりするのですが、一応抱えていた問題2点ともクリアできたので解決ということにいたします。

    ghvstさん、ありがとうございました!

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「Trust Formで書き出されるCSVファイルを改善したい」には新たに返信することはできません。