7 返信 最新の回答 日時: Jan 5, 2016 12:09 AM ユーザー:smileheart

    CSV書き出しをした際につく、ダブルコーテーションを外したいのですが、できずに困っています。

    smileheart

      CSV書き出しをした際につく、ダブルコーテーションを外したいのですが、できずに困っています。

      ググッてみましたが、うまく行きません。

      &でフィールドをつなげて、tabで書きだしてみましたが、当然tabが入りだめでした。

      XMLも以下の記事をみて試しましたがうまく行きません。

      XMLに無知で対応できなかっただけかもしれませんが。。。

      http://mixi.jp/view_bbs.pl?id=13672294&comm_id=8374

       

       

      環境は、Win7   FM12AVです

       

       

      よろしくお願いします。

        • 1. Re: CSV書き出しをした際につく、ダブルコーテーションを外したいのですが、できずに困っています。
          user14047

          サンプルをつくってみました。xsl を書くのが久しぶりだったのでちょっと手間取ってしまいました。

          スクリプトの流れとしては、Utility テーブルに格納された .xsl ファイルをテンポラリーフォルダに書き出し、

          この .xsl ファイルを xsl スタイルシートと指定してファイルタイプ XML としてエクスポートするというものです。

          .xsl ファイルの中身はこんな感じです。

          <?xml version="1.0" encoding="UTF-8"?>
          <xsl:stylesheet
            version="1.0"
            xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
            xmlns:fmp="http://www.filemaker.com/fmpxmlresult"
            exclude-result-prefixes="fmp">
            <xsl:output
            method="text"
            version="1.0"
            encoding="UTF-8"
            indent="yes" />
            <xsl:template match="fmp:FMPXMLRESULT">
            <!-- セパレーターの指定 ここではコンマ -->
            <xsl:variable name="separater"><xsl:text>,</xsl:text></xsl:variable>
            <!-- フィールド数を変数に設定 -->
            <xsl:variable name="fieldCount"><xsl:value-of select="count(fmp:METADATA/fmp:FIELD)" /></xsl:variable>
          
            <!-- フィールド名も出力する場合はこのコメントを外してください。
            <xsl:comment>fieldName start</xsl:comment>
            <xsl:for-each select="fmp:METADATA/fmp:FIELD">
            <xsl:value-of select="@NAME" />
            <xsl:comment>最後のフィールド以外はセパレーターの追加</xsl:comment>
            <xsl:if test="position() &lt; $fieldCount">
            <xsl:value-of select="$separater" />
            </xsl:if>
            </xsl:for-each>
            <xsl:text disable-output-escaping="yes">&#10;</xsl:text>
            <xsl:comment>fieldName end</xsl:comment>
            -->
          
            <!-- recordContents start -->
            <xsl:for-each select="fmp:RESULTSET/fmp:ROW">
            <xsl:for-each select="fmp:COL">
            <xsl:value-of select="fmp:DATA" />
            <!-- 最後のフィールド以外はセパレーターの追加 -->
            <xsl:if test="position() &lt; $fieldCount">
            <xsl:value-of select="$separater" />
            </xsl:if>
            </xsl:for-each>
            <xsl:text disable-output-escaping="yes">&#10;</xsl:text>
            </xsl:for-each>
            <!-- // recordContents end -->
          
            </xsl:template>
          </xsl:stylesheet>
          <!-- create: chamo 2015.12.25 -->
          
          • 2. Re: CSV書き出しをした際につく、ダブルコーテーションを外したいのですが、できずに困っています。
            smileheart

            ありがとうございます。

             

            丁寧に書いて頂き嬉しいです!!

             

            XMLは無知なのでお返事に時間がかかると思いますが、ご了承ください。

            • 3. Re: CSV書き出しをした際につく、ダブルコーテーションを外したいのですが、できずに困っています。
              user14047

              言い忘れましたが、上記サンプルは LF 改行にしています。

              もし、改行コードを CR+LF にする必要があるのなら、&#10; の部分を &#13;&#10; に、CR にするのなら、&#13; に書き換えてください。

              また、フィールド内改行は考慮しておりません。

              改行コードの指定も変数化したファイルを添付し直しておきます。

              • 4. Re: CSV書き出しをした際につく、ダブルコーテーションを外したいのですが、できずに困っています。
                smileheart

                まだ、理解に時間がかかっています。

                お返事はお待ちください。

                • 5. Re: CSV書き出しをした際につく、ダブルコーテーションを外したいのですが、できずに困っています。
                  smileheart

                  user14047さん

                  明けましておめでとうございます。

                  また、XSLを作って頂き、ありがとうございます。

                  感謝しています。


                  ただ、私には難しいです。


                  FMのファイルから、エクスポートする際に、XSLを選べると思うのですが、これを使うのではないですか?

                  別テーブルを作る必要がわかりません。

                  また、

                  オブジェクトにファイルを格納させて実行させるという発想も私の能力を超えています。

                  テンポラリというのもわかりません。


                  すみません、せっかく作っていただいたのに。

                  • 6. Re: CSV書き出しをした際につく、ダブルコーテーションを外したいのですが、できずに困っています。
                    user14047

                    手動で XML エクスポートを実行する場合、エクスポートするファイル名を決めて、[保存] ボタンを押した後、XML と XSL オプション設定になって、XSL スタイルシートを指定してやる必要があります。

                     

                    もし、アプリケーションフォルダや決まった場所に、この .xsl ファイル(サンプルでは、export_csv.xsl)が置いてある状態にしておけば、わざわざ別テーブルにオブジェクトフィールドに格納して...なんてことはしなくても.xsl ファイルのパスを直接指定してやればいいのですが、サンプルなので、そういった前提でない状態からでも書き出せるようにしているだけですよ。

                     

                    例)XML と XSL オプション指定の XSL スタイルシートファイルの指定

                    filewin:/C:/Program Files/FileMaker/FileMaker Pro 12 Advanced/export_csv.xsl

                     

                    XML and XSL Options dialog box .png

                     

                    今回も添付ファイルをつけてみましたが、export_csv.xsl を事前に C:/Program Files/FileMaker/FileMaker Pro 12 Advanced/export_csv.xsl にコピーしておいてください。

                     

                    # Windows 環境で改行コードの指定を CR 意外にすると、CR + LF + CR になってしまい、メモ帳で開くと改行がダブって見えてしまうようですので、改行コードを CR にしています。提出先で CR 改行のままでいけるかの確認が必要です。今更ですいません。すっかり忘れておりました。

                    • 7. Re: CSV書き出しをした際につく、ダブルコーテーションを外したいのですが、できずに困っています。
                      smileheart

                      なるほど!

                      丁寧なご説明を頂きありがとうございます!

                       

                      よくわかりました!

                      これがきっかけになって、XMLを理解出来る気がしてきました!

                       

                      本当にありがとうございます。

                       

                      ところで、よく似た質問を以下にしているのですが、

                      これもうまくいかず困っています。

                      これは、XMLで行った場合は、どの様にすればいいのでしょうか?

                      複数フィールドでCSVを書き出す方法

                       

                      厚かましくて申し訳ありませんが、よろしくお願いします。