12 返信 最新の回答 日時: Jun 26, 2015 5:20 PM ユーザー:だん

    CSVをエクスポートした際の改行について

    だん

      タイトル

      CSVをエクスポートした際の改行について

      フォーラムに投稿

      お世話になります。

      宜しくお願い致します。

       

      環境WIN7 IE11 FM13AD

      ファイルメーカーからエクスポートでCSVを作成する場合の改行コードについて教えてください。

       

      改行はフィールド内の改行方法となります。

      モバオクというオークションサイトに一括登録が可能になり、CSVから商品を登録できるようになりました。

      いままでは、HTMLで改行をしていたのですが、それが改行されなくなりました。

      ファイルメーカー側で<br>で記述しておりましたが、HTMLの使用ができなくなり、垂直タブに置換しましたが

      モバオク側に登録すると、「ヲ」と表示されてしまいます。

       

      いろいろ調べたのですが、改行コードを登録する方法が沢山あり、どれが正しいのかがわかりません。

      とりあえず、分かる範囲で下記内容に置換してみました。

      "CRLF"

      ","

      "LF"

      "\n"

      モバオク側では下記エラー表示がされました。

       

      「正しいCSVファイル(改行コード:CRLFまたはLF)を選択してください。 」

      <br>からの置換方法が間違っているのでしょうか?

       

      それとも、エクスポートしてから、別のソフトを使用して、改行をするのでしょうか?

      VBSなどの置換方法も模索したのですが、解決方法が見つかりません。

      ご教授のほど宜しくお願い申し上げます。

       

        • 1. Re: CSVをエクスポートした際の改行について
          sago350@未来Switch

          モバオク側の仕様が変わったと思われるので、モバオク側の仕様をまず調べたほうが良いかと思います。

          • 2. Re: CSVをエクスポートした際の改行について
            ねこ吉

            ちょっと情報が少なめなのでわかりにくいのですが、

            エクスポートには「フィールド内容のエクスポート」コマンドを使っているということでしょうか。

            だとすれば、FileMaker のフィールド内改行は、CR(0D)でファイル出力されますので置換が必要ですね。

            こういうケースでは自分は出力したファイルの CR を perl で一括置換してます。

            もちろん、他のツールでもまったくかまわないですが。

             

            もう一つの方法として、「レコードのエクスポート」コマンドを使うという手があります。

            出力のためだけのテンポラリなテーブルを作っておき、出力ファイルの1行に相当するデータを

            1レコードとして書き込んでいきます。(100行のテキストファイルを書き出すのなら、

            100レコード作るとことになります。)

            そのテーブルをレコードのエクスポートコマンドで出力すれば、通常の改行コードで出力できます。

            これだと、FIleMaker だけで解決できると思います。

             

            • 3. Re: CSVをエクスポートした際の改行について
              だん

              sago 様

              ご回答ありがとうございます。

              モバオク側を確認して、下記回答を得ました。

              「エクセルであればEnter+Altによるセル内改行がそのまま反映されます。」とのことです。

              ファイルメーカー側でフィールド内容を

              Substitute ( 商品説明 ; "<br>" ; "
              ")

              と置換して、「レコードのエクスポート」をしましたが、改行が反映されませでした。

              改行コードが違うのでしょうか?

              宜しくお願い致します。

              • 4. Re: CSVをエクスポートした際の改行について
                だん

                ねこ吉 様

                ご回答ありがとうございます。

                詳細がわかりにくく、失礼いたしました。

                 

                フィールドが10ほどあり、それを「レコードのエクスポート」でCSV出力しています。

                その中に「商品説明」というフィールドがあり、そのフィールド内の改行となります。

                いままで、HTMLが使用できていたので、改行は<br>を使用しており、Substitute置換して

                「レコードのエクスポート」をする方法が良いかと考えていました。

                 

                「商品説明」フィールド内では改行をしていなく、「あいうえお<br>かきくけこ<br>」と文字自体はつながっています。

                ねこ吉様より、「FileMaker のフィールド内改行は、CR(0D)でファイル出力されます」と記載があり、

                気づいたのですが、フィールド内に改行がない状態です。

                もし、Substituteで改行コードの変更が可能であれば、Substituteの式を教えていただけないでしょうか?

                 

                もうひとつの方法ですが、この場合、「商品説明」フィールドをそのテンポラリなテーブルへ<br>を基準に取込

                その複数のレコードを「レコードのエクスポート」として、「商品説明」フィールドへ戻すようなイメージでよろしいでしょうか?

                 

                宜しくお願い致します。

                 

                 

                 

                 

                 

                • 5. Re: CSVをエクスポートした際の改行について
                  ねこ吉

                  Substitute 関数で改行を置換する式は、

                  Substitute ( 商品説明 ; "<br>" ; "¶" ) です。

                  モバオクの回答からすると、それだけで解決しそうな気がします。

                   

                  • 6. Re: CSVをエクスポートした際の改行について
                    qbxxdp

                    PowerShellと連携する例です。
                    >「エクセルであればEnter+Altによるセル内改行がそのまま反映されます。」
                    これと同じ仕様のCSVファイルが出来ます。
                    エンコード:Shift-JIS
                    レコード改行:CRLF
                    フィールド内改行:LF

                    スクリプト 例:
                    レコードのエクスポート [ダイアログなし; 「test.csv」; 日本語 (Shift-JIS)]
                    Event を送信 [「aevt」; 「odoc」; "powershell -Command " & Substitute (Script ; ¶ ; "" )]

                    フィールド:Script
                    値:
                    $filePath='D:\!TEMP\test.csv';
                    $file_contents = $(Get-Content -Encoding String  $filePath) -replace \"<br>\",\"`n\";
                    $file_contents | Set-Content -Encoding String  $filePath ;


                    ※「$filePath='D:\!TEMP\test.csv';」ファイルパスは、書き換えて下さい。

                    • 7. Re: CSVをエクスポートした際の改行について
                      qbxxdp

                      >ねこ吉様より、「FileMaker のフィールド内改行は、CR(0D)でファイル出力されます」と記載があり、
                      チョット気になるので補足です。

                      フィールド内の改行が出力できるのは、「スクリプト:フィールド内容のエクスポート」の場合です。
                      ねこ吉さんもそう書かれています。
                      >「フィールド内容のエクスポート」の場合は、CR(0D)でファイル出力されます
                      しかも、「スクリプト:フィールド内容のエクスポート」で出力したファイルは、エンコードがUnicode固定なので使いどころは限定的です。

                      「スクリプト:レコードのエクスポート」の場合は、フィールド内の改行を出力することは、出来ません。

                      • 8. Re: CSVをエクスポートした際の改行について
                        だん

                        ねこ吉 様

                        ご回答ありがとうございます。

                        Substitute ( 商品説明 ; "<br>" ; "¶" ) も試してみたのですが、

                        モバオクに登録して確認すると、「ヲ」と表示されてしまうため、困っておりました。

                        最初の説明不足ですみません。

                         

                         

                        • 9. Re: CSVをエクスポートした際の改行について
                          だん

                          qb_dp 様

                          ご回答ありがとうございます。

                          早速、設定をしていたところ、詰まってしまいましたので教えてください。

                          最初の「スクリプト 例:」の個所は設定できたのですが、その後の「フィールド:Script」部分はどのように設定すればよろしいでしょうか?

                          理解できていないので、3つの設定方法を思い浮かべてみました。

                          ・フィールド設定

                          ・変数を設定

                          ・データベースの管理から計算式を設定

                          それとも全く違う方法だったでしょうか?

                          お手数となりますが、ご教授のほど宜しくお願い致します。

                           

                           

                           

                          • 10. Re: CSVをエクスポートした際の改行について
                            qbxxdp

                            FileMakerスクリプト内でPowerShellスクリプトを記述するのは、文字のエスケイプがややこしいです。

                             

                            「フィールド:Script」を作成して下さい。グローバルが良いでしょう。

                            フィールド「テーブル:Script
                            値:

                            $filePath=\"C:\Users\Documents\mobaoku\mobaoku.csv\";
                            $file_contents = $(Get-Content -Encoding String  $filePath) -replace \"<br>\",\"`n\";
                            $file_contents | Set-Content -Encoding String  $filePath ;


                            上記、PowerShellスクリプトをそのまま設定して下さい。
                            $filePathは、キャプチャを見て書き換えました。

                            で、以下を実行して下さい。


                            スクリプト 例:
                            レコードのエクスポート [ダイアログなし; 「mobaoku.csv」; 日本語 (Shift-JIS)]
                            Event を送信 [「aevt」; 「odoc」; "powershell -Command " & Substitute (テーブル:Script ; ¶ ; "" )]

                            • 11. Re: CSVをエクスポートした際の改行について
                              qbxxdp

                              補足:

                              <br> を `v に変えれば、FileMakerのフールド内の改行を <br> にせず、改行のままでも、大丈夫になります。

                              修正前:
                              $file_contents = $(Get-Content -Encoding String  $filePath) -replace \"<br>\",\"`n\";


                              修正後:
                              $file_contents = $(Get-Content -Encoding String  $filePath) -replace \"`v\",\"`n\";

                              • 12. Re: CSVをエクスポートした際の改行について
                                だん

                                qb_dp 様

                                 

                                ご回答ありがとうございます。

                                フィールド「テーブル:Script」をグローバルフィールドで作成し、フィールドに値をそのまま

                                入力して、スクリプトを実行したところ、希望どおりの結果となりました。

                                qb_dp 様 ありがとうございます。感謝致します。

                                 

                                PowerShellとの連携はすごいですね。この連携も今後勉強していきたいと思います。

                                私はエクセルで作業する難しさから、ファイルメーカーを愛用するようになりました。

                                やはり、ボタン一つで目的のCSVができるのはファイルメーカーの魅力です。

                                今後ともお世話になるかと思いますが、その際には宜しくお願い致します。

                                また、ご協力いただきました皆様には感謝を申し上げます。

                                ありがとうございました。