A5:SQL Mk-2

開発のこと、日々のこと

クエリ結果内の改行とHTMLコピーについて

ホーム フォーラム A5:SQL Mk-2掲示板 クエリ結果内の改行とHTMLコピーについて

2件の投稿を表示中 - 1 - 2件目 (全2件中)
  • 投稿者
    投稿
  • #36041 返信
    AMC
    ゲスト

    SQLのクエリ結果をExcelに貼り付ける際、「表示中の結果セットを全体をコピー」(HTMLコピー)機能でコピーしたあと、Excelに貼り付ける運用をしています。
    「表示中の結果セットをExcelへ出力」(Excel出力)と異なり、別途Excelが起動することがなく、シート内の好みの場所へ貼り付けられるため重宝しています。

    ところが、クエリ結果の値に改行が含まれている状態でHTMLコピー機能を使用してExcelに貼り付けると、改行によりセルが分割されて、それ以外のセルは結合された状態になります。

    たとえば、下記のSQLを改行を含めそのままSQL Server上で実行すると、X列は改行を含まず、Y列は改行を含んだクエリ結果となります。

    SELECT N’改行を含まないテキスト’ AS X, N’改行を含む
    テキスト’ AS Y

    この結果をHTMLコピーしてExcelのA1セルに貼り付けると、レコードは1行なのに、X列はA2セルとA3セルで結合され、Y列はB2セルとB3セルに分割された状態になってしまいます。

    要望としては、結合を行うのではなく、セル内で改行をするようにしてほしいと考えています。
    具体的には、X列はA2セルに、Y列はB2セルに改行を含んだまま出力されるイメージです。

    現状では、セル内に改行が含まれるときに限り、Excel出力をしたうえでコピー&ペーストすることで対処していますが、やはり都度Excelが起動するのは少し手間に感じてしまいます。

    以下、調査したことを記載します。

    まずこの挙動はExcelの仕様によるものだと思われます。
    実際、下記のようなHTMLの表をブラウザ(Firefox)で表示し、それをコピーしてExcelに貼り付けると、今回と同じ挙動(改行でセル分割)となります。(念のため、<>を全角にしています。)

    <table border>
    <tr><th>TEST</th></tr>
    <tr><td>テスト<br>テスト</td></tr>
    </table>

    詳しく調べたところ、Officeの独自CSSにこの改行を制御できる設定「mso-data-placement: same-cell」があるようです。
    これをBRタグのstyleに設定して、先ほどのコピペを試したところ、改行でセルが分割されるのではなく、セル内で改行されるようになりました。(Firefoxで検証しました。EdgeではNGのようです。)

    <table border>
    <tr><th>TEST</th></tr>
    <tr><td>テスト<br style=”mso-data-placement: same-cell;” />テスト</td></tr>
    </table>

    もしかしたら、A5M2の改行の出力を<br style=”mso-data-placement: same-cell;” />としていただくことで、達成できる可能性があるのではないかと期待しています。

    以上、よろしくお願いいたします。

    #36780 返信
    松原正和
    キーマスター

    AMCさんこんにちは。

    これは半ばあきらめていた挙動だったのですが、試してみました。
    ですが、改行のあるデータが見た目上改行なしでExcelに張り付けられ、セルを編集モードにすると、改行付きテキストになる状態になってしまいました。
     
    もうちょっとこちらでも調査してみます。

2件の投稿を表示中 - 1 - 2件目 (全2件中)
返信先: クエリ結果内の改行とHTMLコピーについて
あなたの情報:




コメントは受け付けていません。